spring-boot、mybatis整合
一、MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。相信很多人在使用mybatis的时候都有自己的感受吧,mybatis的框架使用很好的提高了我们自身的开发效率,和sql编写能力。为了简化编写和配置过程,这里我介绍spring-boot和mybatis的二种整合方式。
二、我这里为了简化项目,将两种方式写在一起的,下面我会单独介绍相关的配置。首先需要的jar包(pom.xml)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.troy</groupId>
<artifactId>springboot_mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
</project>
三、目录结构

四、application.yml配置
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/model?useUnicode=true&characterEncoding=utf8
username: root
password: root
mybatis:
mapper-locations: classpath:/mapper/*
五、第一种方式:采用@mapper的注解方式来实现数据库的访问
1、controller层
@RestController
@RequestMapping(value = "/api/login")
public class UserController { @Autowired
private UserService userService; @RequestMapping(value = "/init")
public String init() {
return "hello world";
} @RequestMapping(value = "/findAll")
public List<Map<String,Object>> findAll() {
List<Map<String,Object>> list = userService.findAllMapper();
return list;
} @RequestMapping(value = "/findById")
public Map<String,Object> findById() {
Long id = 1L;
Map<String,Object> map = userService.findByIdMapper(id);
return map;
}
}
2、service层
1)接口
public interface UserService {
public List<Map<String,Object>> findAllMapper();
public Map<String,Object> findByIdMapper(Long id);
}
2)实现类
@Service
@Transactional
public class UserServiceImpl implements UserService { @Autowired
private UserMapper userMapper; @Override
public List<Map<String, Object>> findAllMapper() {
return userMapper.findAll();
} @Override
public Map<String, Object> findByIdMapper(Long id) {
return userMapper.findById(id);
}
}
3、mapper层
@Mapper
@Repository
public interface UserMapper { @Select(value = "select * from user")
public List<Map<String,Object>> findAll(); @Select(value = "select * from user where id=#{id}")
public Map<String,Object> findById(Long id);
}
六、第二种方式:采用xml配置文件的方式
1、controller层
@RestController
@RequestMapping(value = "/api/login")
public class UserController { @Autowired
private UserService userService; @RequestMapping(value = "/init")
public String init() {
return "hello world";
} @RequestMapping(value = "/findAll")
public List<Map<String,Object>> findAll() {
return userService.findAll();
} @RequestMapping(value = "/findById")
public Map<String,Object> findById() {
Long id = 1L;
return userService.findById(id);
}
}
2、service层
1)接口
public interface UserService {
public List<Map<String,Object>> findAll();
public Map<String,Object> findById(Long id);
}
2)实现类
@Service
@Transactional
public class UserServiceImpl implements UserService { @Autowired
private UserDao userDao; @Override
public List<Map<String,Object>> findAll(){
return userDao.findAll();
} @Override
public Map<String, Object> findById(Long id) {
return userDao.findById(id);
}
}
3、dao层
1)接口
@Repository
public interface UserDao { public List<Map<String,Object>> findAll();
public Map<String,Object> findById(Long id);
}
2)实现类
@Repository
public class UserDaoImpl implements UserDao{ @Autowired
private SqlSessionTemplate sqlSession; @Override
public List<Map<String, Object>> findAll() {
return sqlSession.selectList("user.findAll");
} @Override
public Map<String, Object> findById(Long id) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("id",id);
return sqlSession.selectOne("user.findById",map);
}
}
4、userMapper.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="user">
<select id="findAll" resultType="java.util.Map">
select * from user
</select> <select id="findById" parameterType="java.util.Map" resultType="java.util.Map">
select * from user where id=#{id}
</select>
</mapper>
5、application.yml里面配置
mybatis:
mapper-locations: classpath:/mapper/*
七、总结:总体来说两种使用方式都是很不错的,注解的方式在使用上面很方便,也方便管理。xml配置文件的方式在使用上面更灵活,针对于sql量比较大的方式处理比较合理。在会涉及逻辑判断的时候,xml的方式使用就会体现的更加灵活。
spring-boot、mybatis整合的更多相关文章
- Spring boot Mybatis 整合(完整版)
个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页.个人作品.个人博客) 朋友自制的springboot接口文档组件swagge ...
- Spring boot Mybatis 整合
PS: 参考博客 PS: spring boot配置mybatis和事务管理 PS: Spring boot Mybatis 整合(完整版) 这篇博客里用到了怎样 生成 mybatis 插件来写程 ...
- Spring boot Mybatis 整合(注解版)
之前写过一篇关于springboot 与 mybatis整合的博文,使用了一段时间spring-data-jpa,发现那种方式真的是太爽了,mybatis的xml的映射配置总觉得有点麻烦.接口定义和映 ...
- Spring boot Mybatis整合构建Rest服务(超细版)
Springboot+ Mybatis+MySql整合构建Rest服务(涵盖增.删.改.查) 1.概要 1.1 为什么要使用Spring boot? 1.1.1 简单方便.配置少.整合了大多数框架 ...
- spring boot +mybatis 整合 连接数据库测试(从0到1)
spring boot 整合mybatis 1.打开idea创建一个项目 2.在弹出的窗口中选择spring initializr(初始化项目),点击next 3.接下来填写group 与artifa ...
- Spring Boot Mybatis整合
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 特 ...
- spring boot mybatis 整合教程
本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: 1.5.6 jdk:1.8.0_161 maven:3.3.9 额外功能 PageHelper 分页 ...
- Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结
Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...
- Spring Boot:整合MyBatis框架
综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单 ...
- Spring boot Mybatis
最近刚接触Spring boot,正是因为他的及简配置方便开发,促使我下定决心要用它把之前写的项目重构,那么问题来了,spring boot怎么整合mybatis呢,下面几个配置类来搞定. 在我的代码 ...
随机推荐
- 【转】Android之drawable state各个属性详解
我们在定义一个drawable的时候可以通过xml定义的drawable对象.它使得一个图片能在不同的状态下显示不同的图案,比如一个Button,它有pressed,focused,或者其它状态,通过 ...
- sublime text 插件及快捷键的使用
安装插件准备步骤: 1.先安装管理插件,插件必备:package control 1.按ctrl+` 调出console 2.在底部代码行粘贴以下代码并回车: import urllib2,os;pf ...
- Spring(十八)之页面重定向
首先说明,该示例的maven依赖可以复用Spring(十七)之表单处理还有 还有就是对应的web.xml和servlet.xml文件都能复用,不必再次修改. 说到重定向不得不提到一个转发.这里概述一下 ...
- 手绘web原型设计的感受
当下有许多流行的Web原型设计工具,比如mockplus等,mockplus在我们团队初次开发rms系统用到过,确实还不错,但是,原型工具有其优势也有其劣势. 礼拜一开会时,经理跟我说,觉得现在的LM ...
- rnnlm学习
rnn-lm: 1.论文 2.公式推导 2.1 http://blog.csdn.net/a635661820/article/details/44462315 3. 工具 lstm-lm 1. 论文 ...
- PAT——1005. 继续(3n+1)猜想 (25)
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候, ...
- HDU 1053 Entropy(哈夫曼编码 贪心+优先队列)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1053 Entropy Time Limit: 2000/1000 MS (Java/Others) ...
- redux-saga框架使用详解及Demo教程
redux-saga框架使用详解及Demo教程 前面我们讲解过redux框架和dva框架的基本使用,因为dva框架中effects模块设计到了redux-saga中的知识点,可能有的同学们会用dva框 ...
- struts2-笔记
文件下载http://struts.apache.org/download.cgi 第一步导入jar 包 在lib中有jar 包,不能把这些都导入到项目中 在apps 目录里面,找到实例程序,程序中直 ...
- GoogleHacking相关技巧
转自https://www.cnblogs.com/anka9080/p/googlehack.html 0x 01 GoogleHack语法 Site 指定域名 Intext 正文中出现关键字的网页 ...