本文在个人技术博客【鸟不拉屎】同步发布,详情可猛戳 亦可扫描文章末尾二维码关注个人公众号【鸟不拉屎】

Mybatis 初期使用比较麻烦,需要各种配置文件、实体类、Dao 层映射关联、还有一大推其它配置。mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以简单配置轻松上手。

mybatis-spring-boot-starter

官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot

其实就是 Mybatis 看 Spring Boot 这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。

当然任何模式都需要首先引入mybatis-spring-boot-starter的 Pom 文件,现在最新版本是 2.0.1

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>

我一般使用的是XML极简模式,可能是由于之前用的hibernate用习惯了

极简 xml 版本

极简 xml 版本保持映射文件的老传统,接口层只需要定义空方法,系统会自动根据方法名在映射文件中找对应的 Sql .

1 添加相关 Maven 文件

<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

完整的 Pom 包这里就不贴了,大家直接看源码

2、application.yml相关配置

推荐使用application.yml进行配置,其实使用application.yml或者application.properties都是一样的效果,application.yml最终是转换为application.properties进行生效的,只不过application.yml视觉效果看起来更加明了。新建项目默认为application.properties,直接改为application.yml,另外新增一个application-test.yml用户不同环境使用不同的配置文件用。

application.yml配置:

#指定配置文件为test
spring:
profiles:
active: test #配置Mybatis
mybatis:
type-aliases-package: com.niaobulashi.entity
mapper-locations: classpath:mapper/*.xml
configuration:
# 开启驼峰命名转换,如:Table(create_time) -> Entity(createTime)。不需要我们关心怎么进行字段匹配,mybatis会自动识别`大写字母与下划线`
map-underscore-to-camel-case: true #打印SQL日志
logging:
level:
com.niaobulashi.dao: DEBUG

application-test.yml配置:

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

Spring Boot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到 sqlSessionFactory 中,sqlSessionFactory 会自动注入到 Mapper 中,对了,你一切都不用管了,直接拿起来使用就行了。

在启动类中添加对 mapper 包扫描@MapperScan

@SpringBootApplication
@MapperScan("com.niaobulashi.dao")
public class MybatisApplication { public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
} }

或者直接在 Mapper 类上面添加注解@Mapper,建议使用上面那种,不然每个 mapper 加个注解也挺麻烦的

3、添加 User 的实例

@Data
public class SysUserEntity implements Serializable {
private static final long serialVersionUID = 1L;
//用户ID
private Long userId; //用户名
private String username; //密码
private String password; //盐
private String salt; //邮箱
private String email; //手机号
private String mobile; //状态 0:禁用 1:正常
private Integer status; //创建时间
private Date createTime;
}

4、添加 User 的映射文件

<mapper namespace="com.niaobulashi.dao.SysUserDao">

    <!--查询用户的所有菜单ID-->
<select id="queryUserInfo" resultType="com.niaobulashi.entity.SysUserEntity">
SELECT
ur.*
FROM
sys_user ur
WHERE
1 = 1
AND ur.user_id = #{userId}
</select> </mapper>

其实就是把上个版本中 Mapper 的 Sql 搬到了这里的 xml 中了

5、编写 Mapper 层的代码

public interface SysUserDao {
/**
* 根据userId查询用户信息
* @param userId 用户ID
*/
List<SysUserEntity> queryUserInfo(Long userId);
}

5、编写Service层的代码

SysUserService接口类:

public interface SysUserService {
/**
* 查询用户的所有菜单ID
*/
List<SysUserEntity> queryUserInfo(Long userId);
}

SysUserServiceImpl实现类:

@Service("sysUserService")
public class SysUserServiceImpl implements SysUserService {
@Resource
private SysUserDao sysUserDao;
/**
* 查询用户的所有菜单ID
* @param userId
* @return
*/
@Override
public List<SysUserEntity> queryUserInfo(Long userId) {
return sysUserDao.queryUserInfo(userId);
}
}

7、测试

经过上面5个步骤就可以完成基本的接口开发,省去了Controller层的开发

@RunWith(SpringRunner.class)
@SpringBootTest
public class MabatisTest {
private final static Logger logger = LoggerFactory.getLogger(MabatisTest.class); @Autowired
private SysUserService sysUserService; @Test
public void queryUserInfo() throws Exception {
SysUserEntity userEntity = new SysUserEntity();
userEntity.setUserId(1L);
List<SysUserEntity> list = sysUserService.queryUserInfo(userEntity.getUserId());
logger.info("list:" + list);
} }

最后项目目录结构

总结

SpringBoot和Mybatis这对CP,完美

示例代码-github


关于作者:

个人博客:鸟不拉屎

github主页:niaobulashi

github博客:鸟不拉屎

掘金:鸟不拉屎

博客园:鸟不拉屎

知乎:鸟不拉屎

微博:胡浪同學

公众号:鸟不拉屎

Spring Boot2(一):使用Spring Boot2集成Mybatis基础搭建的更多相关文章

  1. Spring Boot 2.X(二):集成 MyBatis 数据层开发

    MyBatis 简介 概述 MyBatis 是一款优秀的持久层框架,支持定制化 SQL.存储过程以及高级映射.它采用面向对象编程的方式对数据库进行 CRUD 的操作,使程序中对关系数据库的操作更方便简 ...

  2. 学习Spring Boot:(七)集成Mybatis

    前面都是用的是spring data JPA,现在学习下Mybatis,而且现在Mybatis也像JPA那样支持注解形式了,也非常方便,学习一下. 数据库 mysql 5.7 添加依赖 在pom文件中 ...

  3. springboot集成mybatis环境搭建以及实现快速开发微服务商品模块基本的增删改查!

    之前学习了springboot和mybatis3的一些新特性,初步体会了springboot的强大(真的好快,,,,,),最近趁着复习,参考着以前学习的教程,动手写了一个springboot实战的小例 ...

  4. MyBatis 基础搭建及架构概述

    目录 MyBatis 是什么? MyBatis 项目构建 MyBatis 整体架构 接口层 数据处理层 基础支持层 MyBatis 是什么? MyBatis是第一个支持自定义SQL.存储过程和高级映射 ...

  5. Spring Boot集成MyBatis的2种方式

    目录 写在前面 准备工作 配置数据库驱动 配置数据源 原生集成MyBatis 依赖配置 注册MyBatis核心组件 定义并使用映射器 通过MyBatis-Spring-Boot-Starter集成 默 ...

  6. 构建第一个Spring Boot2.0应用之集成mybatis、Druid(七)

    一.环境: IDE:IntelliJ IDEA 2017.1.1 JDK:1.8.0_161 Maven:3.3.9 springboot:2.0.2.RELEASE 二.说明:      本文综合之 ...

  7. 构建第一个Spring Boot2.0应用之集成mybatis(六)

    一.环境: IDE:IntelliJ IDEA 2017.1.1 JDK:1.8.0_161 Maven:3.3.9 springboot:2.0.2.RELEASE 二.步骤 方式一:利用配置文件配 ...

  8. Spring Boot2(二):使用Spring Boot2集成Mybatis缓存机制

    前言 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机制,在部署的时候踩过了一些坑.在此记录和分享一下Mybatis的缓存作用. 本文章的源码再文章末尾 什么是查询 ...

  9. Spring Boot2 系列教程(二十一)整合 MyBatis

    前面两篇文章和读者聊了 Spring Boot 中最简单的数据持久化方案 JdbcTemplate,JdbcTemplate 虽然简单,但是用的并不多,因为它没有 MyBatis 方便,在 Sprin ...

随机推荐

  1. Vue插件资料

    UI组件element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 iview ★5801 - 基于 Vuejs 的开源 UI ...

  2. 使用Toast进行用户提醒(转)

    Toast是Android提供的一个轻量级的用户提醒控件,使用也很简单,就相当一个极简的dialog!!!下面将向您介绍一些Toast的详细用法: 1.普遍使用的方法: Context context ...

  3. Scatter matrix(散布矩阵)

    n 个 m 维的样本,Xm×n=[x1,x2,-,xn],样本均值定义为: x¯=1n∑i=1nxi 散列矩阵定义为如下的半正定矩阵: S=∑j=1n(xj−x¯)(xj−x¯)T=∑j=1n(xj− ...

  4. STM32处理器AD难度整理

    1.STM32的AD变化,任务组可以转换成两组:规则组和注射组.随机序列按随机顺序变换多种渠道构成了一组转换.例如.能够完成转换中,例如按照以下顺序:通道3.通道8.通道2.通道2.通道0.通道2.通 ...

  5. WPF元素绑定

    原文:WPF元素绑定 数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性.目标属性是依赖项属性.源对象可以是任何内容,从另一个WPF元素乃至ADO. ...

  6. JS 输入框智能提示

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. Selenium-等待

    分为3种 (1)就是通过线程强制等待 Thread.sleep(1000); (2)隐示等待.就是所有的命令都等待.分为3种 // 这个方法表示全局的等待.意思是针对所有的findElement方法都 ...

  8. 没必要看源码。。把文档学通就已经牛逼了(我们大多还是在应用层,还达不到研究的程度。附class与examples大全链接)

    [学霸]深圳-鑫 2017/7/11 13:54:07只是学习怎么用QT的话,不用看源码.看帮助文档就很好要学习编码风格与思路,就看看源码 [学神]武汉-朝菌 2017/7/11 13:54:39没必 ...

  9. How do you create a DynamicResourceBinding that supports Converters, StringFormat?

    原文 How do you create a DynamicResourceBinding that supports Converters, StringFormat? 2 down vote ac ...

  10. 将byte[]转为WriteableBitmap对象

    原文:将byte[]转为WriteableBitmap对象 //convert the bytes to WriteableBitmap privateWriteableBitmap BytesToI ...