微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

详解Spring Boot集成MyBatis注解方式

本篇文章主要介绍了详解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依赖,本例中所用到的依赖如下:

org.springframework.bootspring-boot-starter-parent1.4.2.RELEASEOrg.springframework.bootspring-boot-starter-weborg.mybatis.spring.bootmybatis-spring-boot-starter1.1.1MysqLmysql-connector-java5.1.40org.springframework.bootspring-boot-maven-plugin

然后创建一下工程目录结构,如下图所示:

代码文件内容

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 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 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几乎不用任何配置工作,能有效加快开发效率!

代码库地址:github地址

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐