SpringBoot 整合 Mybatis 进行CRUD测试开发
2020-02-06 08:04
489 查看
今天来和大家分享下 Spring Boot 整合 MyBatis 的 CRUD 测试方法开发。因为 MyBaits 有两种开发形式,一种基于注解,一种基于 xml 。
SpringBoot配置文件也有
*.properties和
*.yaml两种形式。下面,我也会使用不同的开发形式进行分享。
环境准备
引入依赖
<!--Mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <!--Druid数据库连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!--MySQL--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
配置参数(application.properties)
# dataSource 配置 spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=Asia/Shanghai&characterEncoding=utf-8 spring.datasource.druid.username=root spring.datasource.druid.password=root # 开启mybatis驼峰命名 mybatis.configuration.map-underscore-to-camel-case=true
初始化数据库
-- CREATE DATABASE testdb; use testdb; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `username` varchar(255) COMMENT '用户名', `password` varchar(255) COMMENT '密码', `create_time` datetime COMMENT '创建日期', PRIMARY KEY (`id`) ) ENGINE = InnoDB CHARACTER SET = utf8 ;
实体类
package com.github.smallminmin.springboot.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; @Data public class User implements Serializable { private Long id; private String username; private String password; private Date createTime; }
注解版实现
注解版实现替代 xml形式写 sql 语句,只需在 mapper 文件各个方法的上面加入相应的注解即可,例如:
@Select、
@Insert、
@Delete、
@Update等。
创建 mapper
@Mapper @Repository public interface UserDao { /** * 插入数据 */ @Insert("insert into user(username,password,create_time) values(#{username},#{password},#{createTime})") void save(User user); /** * 根据用户id删除数据 */ @Delete("delete from user where id = #{id}") void deleteById(long id); /** * 更改用户数据 */ @Update("update user set username=#{username},password=#{password} where id=#{id}") void update(User user); /** * 查询所有的用户 */ @Select("select * from user") @Results({ @Result(property = "createTime", column = "create_time") }) List<User> findAll(); /** * 根据用户id查询数据 */ @Select("select * from user where id = #{id}") @Results({ @Result(property = "createTime", column = "create_time") }) User findById(long id); }
由于使用MyBatis的接口代理开发模式,且接口和 xml 需要名称相同。那么在 SpringBoot整合 MyBaits 中也要有对应的配置:
- 方式一:在每个 mapper 类上添加@Mapper 注解
- 方式二:在Application.java的SpringBoot启动类上,添加
@MapperScan("com.github.smallminmin.springboot.dao")
@Result注解用于修饰返回结果集,若实体类和数据库表字段不一致也可用其修饰
测试类
package com.github.smallminmin.springboot.dao; import com.github.smallminmin.springboot.domain.User; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.Date; import java.util.List; import java.util.Random; @SpringBootTest @RunWith(SpringRunner.class) public class UserDaoTest { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private UserDao userDao; Random random = new Random(); User user = new User(); @Test public void save() { for (int i = 0; i < 10; i++) { int rand = random.nextInt(100); user.setUsername("xxx" + rand); user.setPassword("ddd" + rand); user.setCreateTime(new Date()); userDao.save(user); } } @Test public void deleteById() { userDao.deleteById(20l); findAll(); } @Test public void update() { int rand = random.nextInt(100); user.setUsername("update" + rand); user.setPassword("pwd" + rand); user.setId(19l); userDao.update(user); findAll(); } @Test public void findAll() { List<User> all = userDao.findAll(); for (User user1 : all) { logger.info("user={}", user1); } } @Test public void findById() { User byId = userDao.findById(20l); logger.info("user={}", byId); } }
xml 实现
准备配置文件(application.yml)
# dataSource spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=Asia/Shanghai&characterEncoding=utf-8 username: root password: root # mybatis mybatis: mapper-locations: classpath:mapper/**/*.xml type-aliases-package: com.github.smallminmin.springboot.domain configuration: # 使用jdbc的getGeneratedKeys 可以获取数据库自增主键值 use-generated-keys: true # 开启驼峰命名转换,如:Table(create_time) -> Entity(createTime)。不需要我们关心怎么进行字段匹配,mybatis会自动识别`大写字母与下划线` map-underscore-to-camel-case: true
创建mapper.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="com.github.smallminmin.springboot.dao.UserDao"> <select id="findAll" resultType="com.github.smallminmin.springboot.domain.User"> select * from user </select> <select id="findById" resultType="com.github.smallminmin.springboot.domain.User"> select * from user where id = #{id} </select> <insert id="save" parameterType="com.github.smallminmin.springboot.domain.User"> insert into user(username,password,create_time) values(#{username},#{password},#{createTime}) </insert> <update id="update" parameterType="com.github.smallminmin.springboot.domain.User"> update user set username=#{username},password=#{password} where id=#{id} </update> <delete id="deleteById" parameterType="long"> delete from user where id=#{id} </delete> </mapper>
本文及代码参考自 tycoding,感谢分享。
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- SpringBoot整合mybatis进行快速开发
- spring-boot整合mybatis(使用Fiddler抓包工具进行测试)
- SpringBoot整合Mybatis实现CRUD
- SpringBoot整合MyBatis开发
- Spring Boot --整合redis进行缓存注解开发
- [置顶] WEB开发----spring boot与mybatis整合
- SpringBoot整合Mybatis 附上非常简单的测试
- SpringBoot+Redis+Mybatis+AngularJS整合开发
- SpringBoot整合Mybatis【非注解形式开发】
- Springboot整合Mybatis实现级联一对多CRUD操作
- 对Spring整合Mybatis进行测试
- Spring Boot整合Mybatis并完成CRUD操作的实现示例
- 开发框架整合与搭建:spring boot+mybatis+jedis
- JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎
- JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎
- springboot 整合mybatis,pagehelper。测试类。
- SpringBoot之Mybatis连接MySQL进行CRUD(注解&配置文件)(简测试版)
- Spring boot整合Mybatis实现级联一对多CRUD操作的完整步骤
- Spring boot入门,整合mybatis开发案例
- Spring+SpringMvc+Mybatis框架集成搭建教程三(框架整合测试程序开发)