将Mybatis引入Spring Boot项目连接数据库操作

一,首先,在pom.xml引入Mybatis插件

加入Maven依赖代码即可快速引入Mybatis 2.0.0:

<!--Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

上面代码将mybatis 2.0.0和mysql连接插件引入项目,保存,等待插件加载完。

二,在配置文件中加入连接配置信息

打开application.properties编辑,加入连接配置信息:

#mybatis链接数据库相关配置
spring.datasource.url=jdbc:mysql://192.168.10.223:3306/db_demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=Kings0ft_01
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

以上信息用于连接mysql数据库。

三,在项目启动程序中加入mapper注解

打开项目的Xxhdemo1Application,加入注解。

package xxh.springbootmvc.xxhdemo1;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
/*Spring Boot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到 sqlSessionFactory 中,
sqlSessionFactory 会自动注入到 Mapper 中*/
@MapperScan("xxh.springbootmvc.xxhdemo1.MybatisDemo.mapper")
public class Xxhdemo1Application {
public static void main(String[] args) {
SpringApplication.run(Xxhdemo1Application.class, args);
}
}

注意,加入@MapperScan注解后,Spring Boot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到 sqlSessionFactory 中,sqlSessionFactory 会自动注入到 Mapper 中。

四,按上面Mapper 路径创建自己建Package,然后在里面创建自己的Mapper 和Model。

创建Model示例 D:\javaWorkspace\IdeaProjects\xxhdemo1\src\main\java\xxh\springbootmvc\xxhdemo1\MybatisDemo\mapper\UserEntity.java:

package xxh.springbootmvc.xxhdemo1.MybatisDemo.mapper;

import java.util.Date;

public class UserEntity {
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return Name;
} public void setName(String name) {
Name = name;
} public String getDesc() {
return Desc;
} public void setDesc(String desc) {
Desc = desc;
} public Date getCreateTime() {
return CreateTime;
} public void setCreateTime(Date createTime) {
CreateTime = createTime;
} public UserEntity(int id, String name, String desc, Date createTime) {
this.id = id;
Name = name;
Desc = desc;
CreateTime = createTime;
} @Override
public String toString() {
return "UserEntity{" +
"id=" + id +
", Name='" + Name + '\'' +
", Desc='" + Desc + '\'' +
", CreateTime=" + CreateTime +
'}';
} private int id;
private String Name;
private String Desc;
private Date CreateTime;
}

创建Mapper示例 D:\javaWorkspace\IdeaProjects\xxhdemo1\src\main\java\xxh\springbootmvc\xxhdemo1\MybatisDemo\mapper\UserMapper.java

package xxh.springbootmvc.xxhdemo1.MybatisDemo.mapper;

import org.apache.ibatis.annotations.*;
import java.util.List;
/*注意Mapper的类型是“接口”*/
public interface UserMapper {
/*查询操作示例*/
@Select("SELECT * FROM t_user;")
@Results({
@Result(property = "id", column = "Id"),
@Result(property = "Name", column = "Name"),
@Result(property = "Desc", column = "Desc"),
@Result(property = "CreateTime", column = "CreateTime")
})
List<UserEntity> getAll();
/*查询操作示例*/
@Select("SELECT * FROM t_user WHERE Id = #{id};")
@Results({
@Result(property = "id", column = "Id"),
@Result(property = "Name", column = "Name"),
@Result(property = "Desc", column = "Desc"),
@Result(property = "CreateTime", column = "CreateTime")
})
UserEntity getEntity(int id);
/*插入操作示例*/
@Insert("INSERT INTO t_user(`Name`,`Desc`,CreateTime) VALUES(#{Name}, #{Desc}, #{CreateTime});")
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="Id") /*将自增ID绑定到实体,keyProperty是实体字段,keyColumn是数据库字段*/
int insert(UserEntity user);
/*修改操作示例*/
@Update("UPDATE t_user SET `Name`=#{Name},`Desc`=#{Desc} WHERE Id =#{id};")
int update(UserEntity user);
/*删除操作示例*/
@Delete("DELETE FROM t_user WHERE Id =#{id};")
int delete(int id);
}

五,创建Controller,写接口或页面调用操作数据库方法

测试demo只需要放回数据即可,不写页面了。所以引入@RestController,@RequestMapping注解。然后必须在控制器域代码里声明Mapper类型,访问类型一般是私有的:

/*在控制器域代码声明Mapper类型*/
private UserMapper UserMapper;

然后再控制器里面写各种调用Mapper操作数据库方法,调用正删查改完整示例:

package xxh.springbootmvc.xxhdemo1.MybatisDemo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import xxh.springbootmvc.xxhdemo1.MybatisDemo.mapper.UserEntity;
import xxh.springbootmvc.xxhdemo1.MybatisDemo.mapper.UserMapper;
import java.util.List;
import java.util.Date; @RestController
@EnableAutoConfiguration
@RequestMapping("/v1/mybatisdemo")
public class mysqlTestController {
/*在控制器域代码声明Mapper类型*/
@Autowired
private UserMapper UserMapper; @RequestMapping("add")
public int testInsert() throws Exception {
int id, num = 0;
UserEntity u = new UserEntity(0, "刘备", "大哥", new Date());
num = UserMapper.insert(u);
id = u.getId();
System.out.println("新增数据完成 id=" + id + ",num=" + num);
return num;
} @RequestMapping("get")
public UserEntity testQueryOne(int id) throws Exception {
UserEntity UserEntity = UserMapper.getEntity(id);
System.out.println(UserEntity.toString());
return UserEntity;
} @RequestMapping("getlist")
public List<UserEntity> testQuery() throws Exception {
List<UserEntity> UserEntitys = UserMapper.getAll();
System.out.println(UserEntitys.toString());
return UserEntitys;
} @RequestMapping("edit")
public int testUpdate(int id, String name, String desc) throws Exception {
int num = 0;
UserEntity UserEntity = UserMapper.getEntity(id);
if (null != UserEntity && UserEntity.getId() > 0) {
System.out.println(UserEntity.toString());
UserEntity.setName(name);
UserEntity.setDesc(desc);
num = UserMapper.update(UserEntity);
}
return num;
} @RequestMapping("del")
public int testDelete(int id) throws Exception {
int num = 0;
if (id > 0) {
num = UserMapper.delete(id);
}
return num;
}
}

到这里就可以运行项目代码,测试接口了。

代码结构如图:

六,创建MySQL数据库及表结构

创建MySQL数据库:

CREATE DATABASE IF NOT EXISTS db_demo DEFAULT CHARSET utf8mb4;

创建数据库表结构:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) DEFAULT NULL,
`Desc` varchar(255) DEFAULT NULL,
`CreateTime` datetime(3) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

其中,查询数据列表的运行效果,如图:

【完】

上一篇:idea创建一个入门Spring Boot项目(controller层)使用Maven代码管理

下一篇:将Ldap组织结构及用户信息同步到MySQL,用Spring Boot项目操作

将Mybatis引入Spring Boot项目连接数据库操作的更多相关文章

  1. spring boot 项目连接数据库查询数据过程

    spring boot 项目搭建 pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...

  2. 使用IDEA创建Spring boot项目,继承mybaits。并进行简单的数据库查询操作

    本文讲的是使用IEDA创建Spring boot项目,对于环境安装需要自行准备,如JDK1.8.Maven 3.3.IDEA编译器.Mysql5.7等需事前准备好. 1.创建Spring boot项目 ...

  3. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

  4. Spring Boot项目中MyBatis连接DB2和MySQL数据库返回结果中一些字符消失——debug笔记

    写这篇记录的原因是因为我之前在Spring Boot项目中通过MyBatis连接DB2返回的结果中存在一些字段, 这些字段的元素中缺少了一些符号,所以我现在通过在自己的电脑上通过MyBatis连接DB ...

  5. Spring Boot项目指定启动后执行的操作

    Spring Boot项目指定启动后执行的操作: (1)实现CommandLineRunner 接口 (2)重写run方法 (3)声明执行顺序@Order(1),数值越小,优先级越高 (4)如果需要注 ...

  6. spring boot中连接数据库报错500(mybatis)

    spring boot中连接数据库报错500(mybatis) pom.xml中的依赖 <!-- 集成mybatis--> <dependency> <groupId&g ...

  7. spring boot项目启动报DataSource错误

    初建一个简单的spring boot 项目,启动后会报错. Exception encountered during context initialization - cancelling refre ...

  8. step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework

    文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...

  9. 用Gradle构建Spring Boot项目

    相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...

  10. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

随机推荐

  1. div跟随浏览器大小而改变

    <head> <style> .main { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; ...

  2. 关于免费笔记软件Obsidian和免费同步,长文,保存观看

    前言 这段可以略过 最早使用的笔记软件(应该说是网页摘录软件)是网文快捕 CyberArticle ,但不停换电脑后当年保存的资料基本都遗失了,那可是我翻阅众多涩涩网站的精华文章. 后来网文快捕推出了 ...

  3. 2023NOIP A层联测9 风信子+P2048 【NOI2010】 超级钢琴 2023

    P2048 [NOI2010] 超级钢琴 2023NOIP A层联测9 风信子 一年 OI 一场空,一道原题见祖宗-- Ps:超级钢琴是风信子的前置题. 超级钢琴 题意 在一段序列上,选择长度为 \( ...

  4. Struts2漏洞复现

    Struts2漏洞复现 靶场环境:/vulhub/struts2大多都是OGNL注入 是什么: Struts2是一个基于MVC设计模式的Web应用框架 识别: 1.通过网页后缀来进行判断,如.do或者 ...

  5. Deque的应用案例-回文检查

    7.Deque的应用案例-回文检查 回文检测:设计程序,检测一个字符串是否为回文. 回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam. 分析:该问题的解决方案将使用 ...

  6. 九、FreeRTOS学习笔记-列表和列表项

    列表和列表项的简介 列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务. 列表项就是存放在列表中的项目 列表相当于链表,列表项相当于节点,Fre ...

  7. Python 学习记录 (4)

    Plotly常见可视化方案:以鸢尾花数据为例 简单介绍: Ploty库也有大量统计可视化方案,并且这些可视化方案具有交互化属性. 主要对鸢尾花数据进行处理与可视化. 所展示的结果为交互界面的截图情况, ...

  8. web移动端常见问题(二)

    1.input光标颜色 默认情况下,光标颜色与字体颜色color相同,但也可以通过caret-color属性来单独设置 但是IOS的光标与字体颜色无关,默认是蓝色 可以单独设置光标颜色,这样ios也有 ...

  9. vue-elementui 因滚动条引发的table错位问题

    修复后效果 在网上看到的方法都是设置样式属性,试过之后也不生效,也不知道原因 所以就自己用原生js解决了,代码如下 //修错位 x(){ var u = document.getElementsByC ...

  10. 【滑动窗口】codeforces 1290 A. Mind Control

    题意 第一行输入一个正整数 \(T(1 \leq T \leq 1000)\),表示共有 \(T\) 组测试用例.对于每一组测试用例: 第一行输入三个正整数 \(n, m, k(1 \leq m \l ...