springboot与mybatis整合实例详解
最近项目原因可能会继续开始使用mybatis,已经习惯于spring-data的风格,再回头看xml的映射配置总觉得不是特别舒服,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便。
spring中整合mybatis就不多说了,最近大量使用spring boot,因此整理一下spring boot中整合mybatis的步骤。搜了一下spring boot整合mybatis的文章,方法都比较老,比较繁琐。查了一下文档,实际已经支持较为简单的整合与使用。下面就来详细介绍如何在spring boot中整合mybatis,并通过注解方式实现映射。
整合mybatis
新建spring boot项目,或以chapter1为基础来操作
pom.xml中引入依赖
- 这里用到spring-boot-starter基础和spring-boot-starter-test用来做单元测试验证数据访问
- 引入连接mysql的必要依赖mysql-connector-java
- 引入整合mybatis的核心依赖mybatis-spring-boot-starter
- 这里不引入spring-boot-starter-jdbc依赖,是由于mybatis-spring-boot-starter中已经包含了此依赖
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.3.2.release</version> <relativepath/> <!-- lookup parent from repository --> </parent> <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.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> <version>1.1.1</version> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.21</version> </dependency> </dependencies>
同之前介绍的使用jdbc和spring-data连接数据库一样,在application.properties中配置mysql的连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.driver
同其他spring boot工程一样,简单且简洁的的完成了基本配置,下面看看如何在这个基础下轻松方便的使用mybatis访问数据库。
使用mybatis
在mysql中创建user表,包含id(bigint)、name(int)、age(varchar)字段。同时,创建映射对象user
public class user { private long id; private string name; private integer age; // 省略getter和setter }
创建user映射的操作usermapper,为了后续单元测试验证,实现插入和查询操作
@mapper public interface usermapper { @select("select * from user where name = #{name}") user findbyname(@param("name") string name); @insert("insert into user(name, age) values(#{name}, #{age})") int insert(@param("name") string name, @param("age") integer age); }
创建spring boot主类
@springbootapplication public class application { public static void main(string[] args) { springapplication.run(application.class, args); } }
创建单元测试
测试逻辑:插入一条name=aaa,age=20的记录,然后根据name=aaa查询,并判断age是否为20
测试结束回滚数据,保证测试单元每次运行的数据环境独立
@runwith(springjunit4classrunner.class) @springapplicationconfiguration(classes = application.class) public class applicationtests { @autowired private usermapper usermapper; @test @rollback public void findbyname() throws exception { usermapper.insert("aaa", 20); user u = usermapper.findbyname("aaa"); assert.assertequals(20, u.getage().intvalue()); } }
完整示例chapter3-2-7
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。