今天了解一下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的更多相关文章

  1. SpringBoot之整合Mybatis(增,改,删)

    一,在上一篇文章SpringBoot之整合Mybatis中,我们使用spring boot整合了Mybatis,并演示了查询操作.接下来我们将完善这个示例,增加增,删,改的功能. 二,改动代码 1.修 ...

  2. SpringBoot系列-整合Mybatis(注解方式)

    目录 一.常用注解说明 二.实战 三.测试 四.注意事项 上一篇文章<SpringBoot系列-整合Mybatis(XML配置方式)>介绍了XML配置方式整合的过程,本文介绍下Spring ...

  3. springboot(二)整合mybatis,多数据源和事务管理

     -- 1.整合mybatis -- 2.整合多数据源 -- 3. 整合事务 代码地址:https://github.com/showkawa/springBoot_2017/tree/master/ ...

  4. SpringBoot系列-整合Mybatis(XML配置方式)

    目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...

  5. 【springboot】整合 MyBatis

    转自:https://blog.csdn.net/cp026la/article/details/86493503 1. 简介: 目前,国内大部分公司都使用 MyBatis作为持久层框架.本章整合My ...

  6. SpringBoot (四) - 整合Mybatis,逆向工程,JPA

    1.SpringBoot整合MyBatis 1.1 application.yml # 数据源配置 spring: datasource: driver-class-name: com.mysql.c ...

  7. SpringBoot之整合Mybatis范例

    依赖包: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...

  8. 玩转SpringBoot之整合Mybatis拦截器对数据库水平分表

    利用Mybatis拦截器对数据库水平分表 需求描述 当数据量比较多时,放在一个表中的时候会影响查询效率:或者数据的时效性只是当月有效的时候:这时我们就会涉及到数据库的分表操作了.当然,你也可以使用比较 ...

  9. springboot项目整合mybatis

    记录创建springboot项目并配置mybatis中间件: 资源准备及版本说明 编程工具:IDEA JDK版本:1.8 Maven版本:Apache Maven 3.6.3 springboot版本 ...

随机推荐

  1. BZOJ 1091--切割多边形(几何&枚举)

    1091: [SCOI2003]切割多边形 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 356  Solved: 157[Submit][Status ...

  2. AngularJS入门讲解1:angular基本概念

    AngularJS应用程序主要有三个组成部分: 模板(Templates) 模板是您用HTML和CSS编写的文件,展现应用的视图. 您可给HTML添加新的元素.属性标记,作为AngularJS编译器的 ...

  3. jmeter ——JDBC Request中从数据库中读两个字段给接口取值

    前置条件数据库: 给接口传:tid和shopid这俩字段 直接从JDBC Request开始: Variable name:这里写入数据库连接池的名字(和JDBC Connection Configu ...

  4. Antd 初识

    mark 参考 antd - 官网:Ant Design Pro: Ant Design - github:Ant Design pro - github:

  5. package.json和bower的参数解释

    package.json和bower的参数解释   一.package.json解释: package.json是用来声明项目中使用的模块,这样新的环境部署时,只要在package.json文件所在的 ...

  6. Express-及中间件的简单理解

    Express Express 是一个基于node平台,保持最小规模的灵活的 Node.js Web 应用程序开发框架,在Node.js基础上扩展对了web应用开发所需要的基础功能为 Web 和移动应 ...

  7. SpringMvc redirect

    SpringMVC redirect 核心 首先网上百度到的资源基本已经够用, 留作记录. SpringMVC-redirect重定向跳转传值 虽然这哥们也是转的, 但又没有留源地址. 因此 ... ...

  8. ubuntu下安装ffmpeg

    sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get install ff ...

  9. asp.net core实时库:SignalR(1)

    SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...

  10. es6学习 1

    块级作用域绑定 一 var 声明及变量提升(Hoisting)机制 在函数作用域或全局作用域中通过 var 声明的变量,无论实际上是在哪里声明的,都会被当成在当前作用域顶部声明的变量,这就是我们常说的 ...