SpringBoot整合Mybatis详细教程
一、准备工作
先在eclipse中导入mybatis的dtd约束:
- mybatis-3-config.dtd
- mybatis-3-mapper.dtd
导入方法如图:
新建一张数据表dept:
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`deptno` bigint(20) NOT NULL AUTO_INCREMENT,
`dname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`deptno`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('1', '开发部');
INSERT INTO `dept` VALUES ('2', '财务部');
INSERT INTO `dept` VALUES ('3', '市场部');
INSERT INTO `dept` VALUES ('4', '后勤部');
INSERT INTO `dept` VALUES ('5', '公关部');
INSERT INTO `dept` VALUES ('9', '测试部');
INSERT INTO `dept` VALUES ('10', '测试部');
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
二、Mybatis环境搭建
第一步:添加pom依赖,导入mybatis所需jar包,pom依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
第二步:在src/main/resource目录下新建application.yml配置文件:
server:
port: 8000 # 配置启动端口号
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml # mybatis主配置文件所在路径
type-aliases-package: cn.lizheng.study.mybatis.pojo # 定义所有操作类的别名所在包
mapper-locations: # 所有的mapper映射文件
- classpath:mybatis/mapper/*.xml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
driver-class-name: org.gjt.mm.mysql.Driver # 配置mysql的驱动程序类
url: jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&characterEncoding=UTF-8 # 数据库连接地址
username: *** # 数据库用户名
password: *** # 数据库密码
filters: stat,wall,log4j # 配置druid过滤器,开启监控
dbcp2: # 进行数据库连接池的配置
min-idle: 5 # 数据库连接池的最小维持连接数
initial-size: 5 # 初始化提供的连接数
max-total: 5 # 最大连接数
max-wait-millis: 200 # 等待连接获取的最大超时时间
pagehelper: #pagehelper分页插件
helperDialect: mysql #设置数据库方言
reasonable: true
supportMethodsArguments: true
params: count=countSql
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
第三步:书写mybatis主配置文件(mybatis.cfg.xml
在src/main/resource目录下新建文件夹目录:mybati,然后将在该目录下新建mybati.cfg.xml配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 进行mybatis的相应的环境的属性定义 -->
<settings>
<!-- 在本项目中开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
第四步:在src/mian/java目录中新建springboot启动类ApplicaitonStarter.java
package cn.lizheng.study.mybatis;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApplicationStarter {
public static void main(String[] args){
SpringApplication.run(ApplicationStarter.class, args);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
第五步:编写pojo:Dept.java
package cn.lizheng.study.mybatis.pojo;
public class Dept {
private Long deptno;
private String dname;
public Long getDeptno() {
return deptno;
}
public void setDeptno(Long deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
第六步、编写pojo对应的mapper接口
package cn.lizheng.study.mybatis.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import cn.lizheng.study.mybatis.pojo.Dept;
/**
* dept表mapper接口
* @author zhengL
*
*/
@Mapper // 该注解一定要加,否则无法映射到mybatis的***.xml局部配置文件
public interface DeptMapper {
List<Dept> findAll();
void addDept(Dept dept);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
第七步、创建dept表的mybatis局部配置文件dept.xml
在第二步编写application.yml配置文件时,我们添加了mybatis的相关配置如下:
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml # 配置文件所在路径
type-aliases-package: cn.lizheng.study.mybatis.pojo # 定义所有操作类的别名所在包
mapper-locations: # 所有的mapper映射文件
- classpath:mybatis/mapper/*.xml
- 1
- 2
- 3
- 4
- 5
这个地方的三个配置路径一定要正确。所以我们在src/main/resource/mybatis目录下新建文件夹mapper,然后新建一个dept.xml,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.lizheng.study.mybatis.mapper.DeptMapper">
<!-- 通过ID查询一个用户 -->
<select id="findAll" resultType="Dept">
SELECT deptno,dname FROM dept ;
</select>
<insert id="addDept" parameterType="Dept" >
INSERT INTO dept(dname) VALUES (#{dname}) ;
</insert>
</mapper>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
这个地方要注意namespace的路径一定要写正确。
第八步、创建DeptService接口
package cn.lizheng.study.mybatis.service;
import java.util.List;
import org.springframework.stereotype.Service;
import cn.lizheng.study.mybatis.pojo.Dept;
/**
* dept服务接口
* @author zhengL
*
*/
public interface DeptService {
/**
* 获取所有部门信息
* @return
*/
List<Dept> findAll();
/**
* 添加部门
* @param dept
*/
void addDept(Dept dept);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
第九步、创建DeptService接口的实现类DeptServiceImpl.java
package cn.lizheng.study.mybatis.serviceimpl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.lizheng.study.mybatis.mapper.DeptMapper;
import cn.lizheng.study.mybatis.pojo.Dept;
import cn.lizheng.study.mybatis.service.DeptService;
/**
* dept服务接口实现类
* @author zhengL
*
*/
@Service // 该注解一定要写,否则无法注册bean
public class DeptServiceImpl implements DeptService{
@Autowired
private DeptMapper deptMapper; // 注入mapper
@Override
public List<Dept> findAll() {
return deptMapper.findAll();
}
@Override
public void addDept(Dept dept) {
deptMapper.addDept(dept);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
第十步、编写dept对应的控制器类:DeptController.java
package cn.lizheng.study.mybatis.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.lizheng.study.mybatis.pojo.Dept;
import cn.lizheng.study.mybatis.service.DeptService;
/**
* dept控制器
* @author zhengL
*
*/
@RestController // 此注解指明该控制器直接返回数据,而不进行页面跳转
@RequestMapping("/dept") // 定义路由信息
public class DeptController {
@Autowired
private DeptService deptService;
/**
* 查询所有部门信息
* @return
*/
@RequestMapping("/findAll") // 则次路由信息应该是/dept/findAll
public List<Dept> findAll(){
return deptService.findAll();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
最后在ApplicationStarter类上追加如下配置:
@MapperScan(“cn.lizheng.study.mybatis.mapper”)
运行项目,然后在浏览器输入http://localhost:8000/dept/findAll,然后回车:
成功!!!!