SpringBoot_11_整合MyBatis
- 整合MyBatis
- 整合测试
整合MyBatis
官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3
整合测试
-
导入 MyBatis 所需要的依赖
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version> </dependency>
-
配置数据库连接信息
这我们使用
druid-spring-boot-starter
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.11</version> </dependency>
spring:datasource:username: rootpassword: '0000'#?serverTimezone=UTC解决时区的报错url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:# 数据库连接池最大值max-active: 20# 数据库连接池初始值initial-size: 5# 数据库连接池最小空闲值min-idle: 5# 池中空闲连接大于minIdle且连接空闲时间大于该值,则关闭该连接,单位毫秒(5分钟,默认30分钟)min-evictable-idle-time-millis: 300000# 获取连接时最大等待时间,单位毫秒(1分钟)max-wait: 60000# 检测连接是否有效时执行的sql命令validation-query: select 1# 借用连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能test-on-borrow: false# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能test-on-return: false# 连接空闲时检测,如果连接空闲时间大于timeBetweenEvictionRunsMillis指定的毫秒,执行validationQuery指定的SQL来检测连接是否有效test-while-idle: true# 空闲连接检查、废弃连接清理、空闲连接池大小调整的操作时间间隔,单位是毫秒(1分钟)time-between-eviction-runs-millis: 60000# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500#是否启用StatFilter默认值false,用于采集 web-jdbc 关联监控的数据。web-stat-filter:enabled: true#需要监控的 urlurl-pattern: /*#排除一些静态资源,以提高效率exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'#是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)stat-view-servlet:enabled: true#内置的监控页面地址,例如 /druid/*,则内置监控页面的首页是 /druid/index.htmlurl-pattern: /druid/*#是否允许清空统计数据reset-enable: falselogin-username: adminlogin-password: admin
-
测试数据库是否连接成功!
-
创建实体类,导入 Lombok!
User.java
package com.lee.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @AllArgsConstructor @NoArgsConstructor public class User {private int id;private String name;private String pwd; }
-
创建mapper目录以及对应的 Mapper 接口
UserMapper.java
package com.lee.mapper;import com.lee.pojo.User; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository;import java.util.List;// 这个注解表示了这是一个 mybatis 的 mapper 类 @Mapper @Repository public interface UserMapper {List<User> queryUserList();User queryUserById(int id);int addUser(User user);int updateUser(User user);int deleteUser(int id); }
-
对应的Mapper映射文件
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace=绑定一个对应的Dao/Mapper接口--> <mapper namespace="ncom.lee.mapper.UserMapper"><select id="queryUserList" resultType="User">select * from mybatis.user;</select><select id="queryUserById" resultType="User">select * from mybatis.user where id = #{id};</select><insert id="addUser" parameterType="User">insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd});</insert><update id="updateUser" parameterType="User">update mybatis.user set name=#{name},pwd = #{pwd} where id = #{id};</update><delete id="deleteUser" parameterType="int">delete from mybatis.user where id = #{id}</delete> </mapper>
-
maven配置资源过滤问题
<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource> </resources>
-
编写部门的 UserController 进行测试!
@RestController public class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/queryUserList")public List<User> queryUserList() {List<User> userList = userMapper.queryUserList();for (User user : userList) {System.out.println(user);}return userList;}//添加一个用户@GetMapping("/addUser")public String addUser() {userMapper.addUser(new User(8,"阿毛","123456"));return "ok";}//修改一个用户@GetMapping("/updateUser")public String updateUser() {userMapper.updateUser(new User(8,"阿毛","123456"));return "ok";}@GetMapping("/deleteUser")public String deleteUser() {userMapper.deleteUser(8);return "ok";} }
启动项目访问进行测试!