51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1777|回复: 0
打印 上一主题 下一主题

Spring Boot 整合MyBatis

[复制链接]
  • TA的每日心情
    奋斗
    2021-8-16 14:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-3-8 15:55:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    Spring Boot官方提供了Spring Data的支持,但是却没有提供MyBatis的支持。

    因为,Spring Data是Spring旗下的子产品,而MyBatis却不是。

    本文通过一个小例子来实现Spring Boot 与MyBatis的整合。

    加入maven依赖

    1. <!-- mybatis整合spring boot的starter -->
    2. <dependency>
    3.     <groupId>org.mybatis.spring.boot</groupId>
    4.     <artifactId>mybatis-spring-boot-starter</artifactId>
    5.     <version>1.3.0</version>
    6. </dependency>

    7. <dependency>
    8.     <groupId>com.h2database</groupId>
    9.     <artifactId>h2</artifactId>
    10.     <scope>runtime</scope>
    11. </dependency>

    12. <dependency>
    13.     <groupId>org.springframework.boot</groupId>
    14.     <artifactId>spring-boot-starter-test</artifactId>
    15.     <scope>test</scope>
    16. </dependency>
    复制代码

    Spring Boot官方提供的starter是这样的:spring-boot-starter-*

    而其他第三方提供的starter是这样的:*-spring-boot-starter

    编写实体类

    1. public class Emp {

    2.     private Long id;
    3.     private String name;
    4.     private Date birthday;
    5.     private Double salary;

    6.     public Emp() {
    7.     }

    8.     public Emp(String name, Date birthday, Double salary) {
    9.         this.name = name;
    10.         this.birthday = birthday;
    11.         this.salary = salary;
    12.     }

    13.     //getter and setter
    14. }
    复制代码

    编写持久层

    1. public interface EmpMapper {

    2.     List<Emp> findAll();

    3.     Emp findById(Long id);

    4.     void save(Emp emp);

    5.     void update(Emp emp);

    6.     void delete(Long id);
    7. }
    复制代码

    Spring Boot的启动程序

    1. @MapperScan("org.yun.mapper")
    2. @SpringBootApplication
    3. public class Application {

    4.     public static void main(String[] args) {
    5.         SpringApplication.run(Application.class, args);
    6.     }
    7. }
    复制代码

    @MapperScan指定要扫描的XxxMapper.java文件

    在src/main/resources/下创建包 org.yun.mapper(与EmpMapper.java的包同名)
    然后,建立EmpMapper.xml文件

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    3. <mapper namespace="org.yun.mapper.EmpMapper">

    4.     <sql id="baseSql">
    5.         id,name,birthday,salary
    6.     </sql>

    7.     <select id="findAll" resultType="org.yun.domain.Emp">
    8.         select
    9.         <include refid="baseSql"/>
    10.         from emp
    11.     </select>

    12.     <select id="findById" parameterType="long" resultType="org.yun.domain.Emp">
    13.         select
    14.         <include refid="baseSql"/>
    15.         from emp
    16.         where id = #{id}
    17.     </select>

    18.     <insert id="save" parameterType="org.yun.domain.Emp" keyProperty="id" useGeneratedKeys="true">
    19.         insert into emp(name,birthday,salary)values(#{name},#{birthday},#{salary})
    20.     </insert>

    21.     <update id="update" parameterType="org.yun.domain.Emp">
    22.         update emp set name = #{name},birthday = #{birthday},salary = #{salary}
    23.         where id = #{id}
    24.     </update>

    25.     <delete id="delete" parameterType="long">
    26.         delete from emp where id = #{id}
    27.     </delete>

    28. </mapper>
    复制代码

    编写application.properties

    1. #指定实体类的名别包
    2. mybatis.type-aliases-package=org.yun.domain

    3. #指定XxxMapper.xml的位置
    4. #mybatis.mapper-locations=classpath:org/yun/mapper/*Mapper.xml
    复制代码

    创建数据表schema.sql

    1. CREATE TABLE emp (
    2.   id       BIGINT PRIMARY KEY AUTO_INCREMENT,
    3.   name     VARCHAR(30),
    4.   birthday DATE,
    5.   salary   DOUBLE
    6. );
    复制代码

    初始化数据data.sql

    1. insert into emp(name,birthday,salary)values('admin','1999-09-09',9000);
    复制代码

    将schema.sql、data.sql(名字固定)文件放置在src/main/resources下目录,Spring Boot启动的时候会自动执行。

    最后编写单元测试

    1. import static org.junit.Assert.assertNotNull;
    2. import static org.junit.Assert.assertTrue;

    3. @RunWith(SpringRunner.class)
    4. @SpringBootTest
    5. public class ApplicationTests {

    6.     @Autowired
    7.     private EmpMapper empMapper;

    8.     @Test
    9.     public void contextLoads() {
    10.         assertNotNull(empMapper);

    11.         Emp emp1 = new Emp("tom", new Date(), 5000D);
    12.         Emp emp2 = new Emp("bill", new Date(), 6000D);
    13.         empMapper.save(emp1);
    14.         empMapper.save(emp2);

    15.         assertTrue(empMapper.findAll().size() == 3);

    16.         Emp emp = empMapper.findById(2L);
    17.         emp.setSalary(8000D);
    18.         empMapper.update(emp);
    19.         assertTrue(emp.getSalary() == 8000D);

    20.         empMapper.delete(2L);
    21.         assertTrue(empMapper.findAll().size() == 2);
    22.     }
    23. }
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-25 16:09 , Processed in 0.067221 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表