一、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&amp;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整合的更多相关文章

  1. Spring boot Mybatis 整合(完整版)

    个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页.个人作品.个人博客) 朋友自制的springboot接口文档组件swagge ...

  2. Spring boot Mybatis 整合

    PS: 参考博客 PS: spring boot配置mybatis和事务管理 PS: Spring boot Mybatis 整合(完整版)   这篇博客里用到了怎样 生成 mybatis 插件来写程 ...

  3. Spring boot Mybatis 整合(注解版)

    之前写过一篇关于springboot 与 mybatis整合的博文,使用了一段时间spring-data-jpa,发现那种方式真的是太爽了,mybatis的xml的映射配置总觉得有点麻烦.接口定义和映 ...

  4. Spring boot Mybatis整合构建Rest服务(超细版)

     Springboot+ Mybatis+MySql整合构建Rest服务(涵盖增.删.改.查) 1.概要 1.1 为什么要使用Spring  boot? 1.1.1 简单方便.配置少.整合了大多数框架 ...

  5. spring boot +mybatis 整合 连接数据库测试(从0到1)

    spring boot 整合mybatis 1.打开idea创建一个项目 2.在弹出的窗口中选择spring initializr(初始化项目),点击next 3.接下来填写group 与artifa ...

  6. Spring Boot Mybatis整合

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 特 ...

  7. spring boot mybatis 整合教程

    本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: 1.5.6 jdk:1.8.0_161 maven:3.3.9 额外功能 PageHelper 分页 ...

  8. Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结

    Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...

  9. Spring Boot:整合MyBatis框架

    综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单 ...

  10. Spring boot Mybatis

    最近刚接触Spring boot,正是因为他的及简配置方便开发,促使我下定决心要用它把之前写的项目重构,那么问题来了,spring boot怎么整合mybatis呢,下面几个配置类来搞定. 在我的代码 ...

随机推荐

  1. webpack导学

    随着前端工程越来越复杂,单独建几个文件写业务代码,这样的方式已经无法保证项目的可维护性了. 所以我们就想把不同的逻辑拆成模块,然后分开引入这些模块,每个模块自己做自己的事情,这样就可以保证项目的可维护 ...

  2. PHP数组和字符串相互转换以及判断字符串长度

    这里只介绍最常用的方法: $array=explode(separator,$string); $string=implode(glue,$array); explode() 函数用来将字符串打散成数 ...

  3. 如果将自己的项目共享到github上

    1:创建仓库 点击New repository创建仓库.Git上仓库就相当于项目的意思 创建仓库名(repository) 创建成功后得到自己的github地址 2:在eclipse中创建自己的项目 ...

  4. java _this关键字的用法

    1:This关键字可以用于从一个构造方法调用另一个构造方法,可以用于避免重复代码 2:this的第二个用于this.xxx表示成员变量,成员变量的作用范围是  类   避免产生歧义 package c ...

  5. POJ 1753 Flip Game (状态压缩 bfs+位运算)

    Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 square ...

  6. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联

    ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...

  7. win764 ping不能用的问题

    1.某日发现,ping突然用不了了 2.百度一搜,有如下解答: 1.右击计算机点属性之后找到系统属性下的环境变量: 2.找到系统变量的"path"之后按“编辑”: 3.变量值前面的 ...

  8. Spring boot 的profile功能如何实现多环境配置自动切换

    通常服务端应用开发需要经过以下几个流程: 开发 -> 测试 -> RC验证 -> 上线 这就涉及到四个不同的环境,开发环境.测试环境.RC环境以及生产环境,为了避免不同环境之间相互干 ...

  9. mysql事务隔离

    一.事务的特性 原子性.一致性.隔离性.持久性 二.事务的隔离级别 1.未提交读 (Read Uncommitpeatableted) 臭名昭著的脏读 ,事务A读到事务B未提交的数据 2.提交读RC( ...

  10. Jquery中on绑定事件 点击一次 执行多次 的解决办法

    举个例子,在同一个页面有下拉选择框 <select class="mySelect"> <option value="user">按用户 ...