今天了解一下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. [CSS3] 二级下拉导航

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...

  2. java 实现七大基本排序算法

    一. 选择排序 /** * 选择排序: int arr[] = { 5, 6, 2, 7, 8, 6, 4 }; * * 第0趟 5 2 6 7 6 4 8 第1趟 2 5 6 6 4 7 8 第2趟 ...

  3. 【Quartz】一个小Demo

    Quartz是一个优秀的框架,功能强大,用法简单,比如说下面这个例子. (1)引入Jar包 <!-- quartz 模块 --> <dependency> <groupI ...

  4. 2016级算法期末上机-B.简单·ModricWang's Fight with DDLs I

    1124 ModricWang's Fight with DDLs I 思路 这道题本质上就是一个多项式求值,题目中的n需要手动算一下,单位复根可以根据复数的性质来求,即\(e^{i\pi}+1=0\ ...

  5. 题目1006:ZOJ问题(字符串处理)

    问题来源 http://ac.jobdu.com/problem.php?pid=1006 问题描述 输入一个只包含'z','o','j'三种字符的字符串,判断是否符合要求. 问题分析 分析AC的三个 ...

  6. Webpack学习错误解决笔记

    错误1:在用npm install 安装模块时,时常会出现没有以下类似的错误 解决方法:右键点击node_modules文件夹,选取属性,将文件夹只读选项去除 错误2:在学习到清理/dist文件夹这块 ...

  7. 【性能测试】:LR中解决接口请求中包含中文字符,服务器不识别的问题

    在LR中,直接写的接口请求,如果请求字段包含中文字段,服务器会不识别,这个时候就要用到lr_convert_string_encoding这个函数: 具体用法: lr_convert_string_e ...

  8. 通过MSI解压缩Cab文件

    迁移自我的Github 如果只是想做类似解压缩的操作,那么可以使用如下命令行 C:\Windows\System32\expand.exe <cab file path> -F:* < ...

  9. 用js制作简易计算器及猜随机数字游戏

    <!doctype html><html><head> <meta charset="utf-8"> <title>JS ...

  10. JS框架设计之对象扩展一种子模块

    对象扩展 说完了,对象的创建(框架的命名空间的创建)以及如何解决多库之间的命名空间冲突问题之后,接下来,就是要扩展我们的对象,来对框架进行扩展,我们需要一种新功能,将新添加的功能整合到我们定义的对象中 ...