详解Spring Boot集成MyBatis(注解方式)
mybatis是支持定制化sql、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的jdbc代码和手动设置参数以及获取结果集。spring boot是能支持快速创建spring应用的java框架。本文通过一个例子来学习spring boot如何集成mybatis,而且过程中不需要xml配置。
创建数据库
本文的例子使用mysql数据库,首先创建一个用户表,执行sql语句如下:
create table if not exists user ( `id` int(10) not null auto_increment, `name` varchar(50) null default null , `age` int(2) not null , primary key (id) )
工程目录结构与依赖配置
首先新建一个maven工程,并配置pom依赖,本例中所用到的依赖如下:
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.4.2.release</version> <relativepath /> </parent> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </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.40</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build>
然后创建一下工程目录结构,如下图所示:
代码文件内容
0. 创建配置文件——application.properties
写入一下内容:
spring.datasource.driver-class-name=com.mysql.jdbc.driver spring.datasource.url=jdbc:mysql://localhost:3306/test?usessl=false&useunicode=true&characterencoding=utf-8 spring.datasource.username=root spring.datasource.password=123456
1. 创建pojo——entity/user.java
这是一个pojo,包含了id, name, age三个属性,代码如下:
package com.xyz.dbtest.entity; public class user { private int id; private string name; private int age; public int getid() { return id; } public void setid(int id) { this.id = id; } public string getname() { return name; } public void setname(string name) { this.name = name; } public int getage() { return age; } public void setage(int age) { this.age = age; } }
2. 创建一个数据层接口——service/userservice.java
这是一个mapper类,代码如下:
package com.xyz.dbtest.dao; import com.xyz.dbtest.entity.user; import org.apache.ibatis.annotations.mapper; import org.apache.ibatis.annotations.result; import org.apache.ibatis.annotations.results; import org.apache.ibatis.annotations.select; import java.util.list; @mapper //1 public interface userdao { @results({ //2 @result(property = "id", column = "id"), //2 @result(property = "name", column = "name"), @result(property = "age", column = "age") }) @select("select * from user where age = #{age}") //3 list<user> get(int age); @insert("insert into user(name, age) values (#{name}, #{age})") //3 void insert(user user); }
//1 @mapper将userdao声明为一个mapper接口
//2 @results是结果映射列表,@result中property是user类的属性名,colomn是数据库表的字段名
//3 @select, @insert 分别代表了执行的真实sql
3. 创建一个用户服务——service/userservice.java
这是一个服务类bean,提供三个函数功能,代码如下:
package com.xyz.dbtest.service; import com.xyz.dbtest.dao.userdao; import com.xyz.dbtest.entity.user; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.service; import java.util.list; @service //声明成一个spring bean public class userservice { @autowired //连接到userdao bean private userdao userdao; public string show() { return "hello world!"; } public list<user> showdao(int age) { return userdao.get(age); } public string insert(string name, int age) { //插入一条记录 user user = new user(); user.setname(name); user.setage(age); userdao.insert(user); return "insert ( \""+name+"\", age"+age+") ok!"; } }
4. 常见一个web controller——controller/usercontroller.java
这是一个spring web的controller类,引入了spring-boot-starter-web依赖,代码如下:
package com.xyz.dbtest.controller; import com.xyz.dbtest.service.userservice; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; import org.springframework.web.bind.annotation.restcontroller; @restcontroller //声明为一个restful的controller public class usercontroller { @autowired //自动连接到userservice bean private userservice userservice; @requestmapping(value = "/show") public string show() { return userservice.show(); } @requestmapping(value = "/showdao") public object showdao(int age) { return userservice.showdao(age); } @requestmapping(value="/insert") public string insert(string name, int age) { return userservice.insert(name, age); } }
5. 创建启动类——main/startapp.java
这是一个spring boot启动类。代码如下:
package com.xyz.dbtest.main; import org.mybatis.spring.annotation.mapperscan; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplication(scanbasepackages = "com.xyz.dbtest") //1 @mapperscan(basepackages = "com.xyz.dbtest.dao") //2 public class startapp { public static void main(string[] args) { springapplication.run(startapp.class, args); } }
//1 由于startapp类位于基础包的自包中,因此需要设置scanbasepackage
//2 设置mapper接口所在的包
运行结果
运行sql语句创建数据库表后,运行startapp类。启动成功如下图所示
测试show服务,结果如下:
测试showdao服务,在输入url时需要将参数打包进url,结果如下: 不带参数时,访问错误:
带参数时,访问成功,由于数据库中没有记录,所以结果是一个空列表:
测试insert服务
再次测试showdao服务
结语
通过本文的例子可以看出,使用spring boot集成mybatis几乎不用任何配置工作,能有效加快开发效率!
代码库地址:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 微信支付开发告警通知实例
推荐阅读
-
Spring Boot Redis 集成配置详解
-
详解Spring-Boot集成Spring session并存入redis
-
详解Spring Boot中初始化资源的几种方式
-
详解Spring Boot 中实现定时任务的两种方式
-
详解Spring Boot 集成Shiro和CAS
-
详解Spring Boot + Mybatis 实现动态数据源
-
Spring Boot集成MyBatis实现通用Mapper的配置及使用
-
详解Spring Boot微服务如何集成fescar解决分布式事务问题
-
详解Spring Boot微服务如何集成fescar解决分布式事务问题
-
spring、mybatis 配置方式详解(常用两种方式)