SpringBoot之整合MyBatis
今天了解一下SpringBoot如何与我们最常用的ORM框架Mybatis整合。
一、
需要在pom.xml文件里加入mybatis的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
二、
需要在application.properties文件里加关于mybatis的配置
#mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml ------意思是mapper文件在classpath下的mapper里
mybatis.type-aliases-package=com.renruibin.springbootmybatis.pojo -------设置自定义的Pojo别名为首写字母小写的pojo
#数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/springbootmybatis
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=rrb
三、
使用Ant,达到自动创建默认的Mybatis代码和生成表,需要添加以下文件,目录结构为:

1、user.xml,这是要自动生成代码的一些配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<context id="user">
<jdbcConnection driverClass="${database.driver}"
connectionURL="${database.url}" userId="${database.username}"
password="${database.password}" />
<javaModelGenerator targetPackage="com.renruibin.springbootmybatis.pojo"
targetProject="${targetProject}" />
<sqlMapGenerator targetPackage="mapper"
targetProject="${targetProjRsrc}" />
<javaClientGenerator targetPackage="com.renruibin.springbootmybatis.dao"
targetProject="${targetProject}" type="XMLMAPPER" />
<table tableName="user" domainObjectName="User">
</table>
</context>
</generatorConfiguration>
javaModelGenerator:配置自动生成的pojo所在的位置
sqlMapGenerator:配置自动生成的mapper.xml文件所在的位置
javaClientGenerator:配置自动生成的mapper.java文件所在的位置
2、changleLog.xml,这是要自动生成表或者修改表结构的一些配置
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="20190113" author="rrb">
<createTable tableName="user" remarks="用户版">
<column name="id" type="varchar(32)">
<constraints nullable="false" primaryKey="true" />
</column>
<column name="username" remarks="用户名" type="varchar(50)" />
<column name="password" remarks="密码" type="varchar(50)" />
<column name="status" remarks="状态" type="int" />
<column name="createtime" remarks="创建时间" type="TIMESTAMP" />
<column name="edittime" remarks="修改时间" type="TIMESTAMP" />
</createTable>
</changeSet>
<changeSet id="20190113-2" author="rrb">
<dropColumn tableName="user" columnName="createtime"></dropColumn>
<dropColumn tableName="user" columnName="edittime"></dropColumn>
</changeSet>
</databaseChangeLog>
3、database.properties,这是数据源的一些配置
database.driver=com.mysql.jdbc.Driver
database.url=jdbc\:mysql\://127.0.0.1\:3306/springbootmybatis?useUnicode\=true&characterEncoding\=UTF-8
database.username=root
database.password=rrb
4、update&mybatis.xml,这是ant自动生成代码的配置
<project name="updateDatabase" default="mybatis">
<property file="database.properties">
</property>
<property name="targetProject" location="..\src\main\java">
</property>
<property name="targetProjRsrc" location="..\src\main\resources">
</property>
<path id="jdbclib">
<fileset dir="${basedir}\lib" includes="mysql-connector-java-5.1.23-bin.jar" />
</path>
<target name="mybatis" description="Generate the files">
<taskdef name="mbgenerator" classname="org.mybatis.generator.ant.GeneratorAntTask">
<classpath>
<pathelement location="${basedir}\lib\mybatis-generator-core-1.3.2.jar" />
<pathelement location="${basedir}\lib\generator-0.0.1-SNAPSHOT.jar" />
<pathelement location="${basedir}\lib\mysql-connector-java-5.1.23-bin.jar" />
</classpath>
</taskdef>
<mbgenerator overwrite="true" configfile="generator/user.xml"
verbose="true">
<propertyset>
<propertyref name="database.driver" />
<propertyref name="database.url" />
<propertyref name="database.username" />
<propertyref name="database.password" />
<propertyref name="targetProject" />
<propertyref name="targetProjRsrc" />
</propertyset>
</mbgenerator>
</target>
</project>
5、updateDatabase.xml,这是ant自动生成表的配置<project name="updateDatabase" default="updateDatabase">
<property file="database.properties">
</property>
<path id="jdbclib">
<fileset dir="${basedir}\lib" includes="mysql-connector-java-5.1.23-bin.jar" />
</path>
<target name="updateDatabase">
<fail unless="database.url">database.url not set</fail>
<fail unless="database.username">database.username not set</fail>
<fail unless="database.password">database.password not set</fail>
<taskdef resource="liquibasetasks.properties">
<classpath>
<pathelement location="${basedir}\lib\snakeyaml-1.13.jar" />
<pathelement location="${basedir}\lib\liquibase.jar" />
</classpath>
</taskdef>
<updateDatabase
changeLogFile="${basedir}\changeLog.xml"
driver="${database.driver}"
url="${database.url}"
username="${database.username}"
password="${database.password}"
promptOnNonLocalDatabase="false"
dropFirst="false"
classpathref="jdbclib"
loglevel="info"
/>
</target>
</project>
四、
建立dao、service、controller,目录如下:

1、先看一下dao层的代码是如何编写的吧
@Mapper
public interface UserAtomMapper {
List<User> finaAll();
}
@Mapper这个注解很关键,之前用的@Repository注解,但是与springboot整合之后,这个注解就不能用了,只有@Mapper注解的时候,才可以把这个类注入到service里。
2、看一下mapper层的xml文件是如何编写的
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.renruibin.springbootmybatis.dao.UserAtomMapper">
<select id="finaAll" resultType="com.renruibin.springbootmybatis.pojo.User">
select * from user
</select>
</mapper>
3、看一下service层的代码
@Service
public class UserServiceImpl implements UserService { @Autowired
private UserAtomMapper userAtomMapper; @Override
public List<User> findAll() {
return userAtomMapper.finaAll();
}
4、看一下controller层的代码
@RestController
public class UserController {
@Autowired
private UserService userService;
/**
* 获取所有的用户
* @return
*/
@RequestMapping(value = "findAll",method = RequestMethod.GET)
public List<User> findAll(){
return userService.findAll();
}
}
使用了注解@RestController,这个注解相当于两个注解,@Controller和@ResponseBody
五、
接下来可以测试,在浏览器输入localhost:8080/findAll

SpringBoot之整合MyBatis的更多相关文章
- SpringBoot之整合Mybatis(增,改,删)
一,在上一篇文章SpringBoot之整合Mybatis中,我们使用spring boot整合了Mybatis,并演示了查询操作.接下来我们将完善这个示例,增加增,删,改的功能. 二,改动代码 1.修 ...
- SpringBoot系列-整合Mybatis(注解方式)
目录 一.常用注解说明 二.实战 三.测试 四.注意事项 上一篇文章<SpringBoot系列-整合Mybatis(XML配置方式)>介绍了XML配置方式整合的过程,本文介绍下Spring ...
- springboot(二)整合mybatis,多数据源和事务管理
-- 1.整合mybatis -- 2.整合多数据源 -- 3. 整合事务 代码地址:https://github.com/showkawa/springBoot_2017/tree/master/ ...
- SpringBoot系列-整合Mybatis(XML配置方式)
目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...
- 【springboot】整合 MyBatis
转自:https://blog.csdn.net/cp026la/article/details/86493503 1. 简介: 目前,国内大部分公司都使用 MyBatis作为持久层框架.本章整合My ...
- SpringBoot (四) - 整合Mybatis,逆向工程,JPA
1.SpringBoot整合MyBatis 1.1 application.yml # 数据源配置 spring: datasource: driver-class-name: com.mysql.c ...
- SpringBoot之整合Mybatis范例
依赖包: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...
- 玩转SpringBoot之整合Mybatis拦截器对数据库水平分表
利用Mybatis拦截器对数据库水平分表 需求描述 当数据量比较多时,放在一个表中的时候会影响查询效率:或者数据的时效性只是当月有效的时候:这时我们就会涉及到数据库的分表操作了.当然,你也可以使用比较 ...
- springboot项目整合mybatis
记录创建springboot项目并配置mybatis中间件: 资源准备及版本说明 编程工具:IDEA JDK版本:1.8 Maven版本:Apache Maven 3.6.3 springboot版本 ...
随机推荐
- “全栈2019”Java异常第一章:什么是异常?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- eclipse打包jar文件
论文仿真做线性回归分类在人脸识别中应用与研究,在单机下实现LRC算法后,又在Hadoop云平台下实现了该算法.在比较实验结果时候需要放在相同硬件条件下比较.但是LRC单机算法是在windows下的ec ...
- 学习xss模拟构造攻击(第一篇)
本文作者:i春秋签约作家——rosectow 0×00前言 XSS又名叫CSS全程(cross site scriptting),中文名跨站脚本攻击,目前网站的常见漏洞之一,它的危害没有像上传漏洞,s ...
- 【awk】按小时切割日志
需求: 把日志按日志内容中的小时数做切割 {hostname=ali-beijing-msync-3512} 2017-05-17 23:17:52.694 [info] <0.27292.70 ...
- Spring Boot 入门系列
本系列博文版权 简书 面皮大师 所有,转载请标明原文及出处: http://www.jianshu.com/u/062bd8f1299c 项目地址: https://github.com/daleiw ...
- vscode调试typescript
1.记录一个插件:https://www.npmjs.com/package/ts-node # Locally in your project npm install -D ts-node npm ...
- bzoj4842: [Neerc2016]Delight for a Cat
bzoj4842 这是一道网络流的题(大家都看出来了吧) 首先我们简化一下题目,选出最关键的部分(就是知道什么和要求什么,还有条件) 我们在这里把睡觉设为0,至少有t0时间在睡觉,把打隔膜设为1,至少 ...
- Python文件中执行脚本注释和编码声明
在 Python 脚本的第一行经常见到这样的注释: #!/usr/bin/env python3 或者 #!/usr/bin/python3 含义 在脚本中, 第一行以 #! 开头的代码, 在计算机行 ...
- [Alpha]Scrum Meeting#10
github 本次会议项目由PM召开,时间为4月13日晚上10点30分 时长25分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写每日例会报告撰写并整理任务分配博客 撰写每日例会报告配合测试.验收 ...
- ASP.NET MVC 下拉列表实现
https://blog.csdn.net/Ryan_laojiang/article/details/75349555?locationNum=10&fps=1 前言 我们今天开始好好讲讲关 ...