博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring集成Mybatis plus
阅读量:6197 次
发布时间:2019-06-21

本文共 3793 字,大约阅读时间需要 12 分钟。

Springboot中流行的持久层框架是Hibernate和Mybatis

前者已经成为Spring Data的规范,以极简和全自动的对象映射著称,后者是一个半自动化的ORM框架,SQL独立存放在XML文件中,提高自由度的同时也方便DBA进行校对和后续SQL优化

由于Mybatis plus完全基于Mybatis,且吸收了一部分HIbernate的优点,提供集成的CRUD,基本上现在开发中都使用Mybatis Plus替代原生Mybatis框架

敲黑板: MybatisPlus 不能和 Mybatis同时使用

使用流程(三步走)

  1. 添加Maven依赖
  2. MyBatisPlus 配置
  3. 编写3种文件(可使用插件生成,Idea Mybatis generater)
    • 实体entity
    • Dao层接口Mapper
    • Xml文件中的Sql语句

第一步 添加Maven依赖

com.baomidou
mybatisplus-spring-boot-starter
com.baomidou
mybatis-plus
mysql
mysql-connector-java
复制代码

第二步 在application.yml中配置Mybatis Plus

使用properties配置文件的可以在进行yml文件的转换

重点!!!

第一行的xml文件扫描,此处的xml文件存放在resource下的mapper路径下(我的路径是resource/mapper/xx模块/xxx.xml)

第二行的实体扫描!!!要根据自己的entity目录进行配置 自己根据自己的实体类路径修改typeAliasesPackage,或者使用我的这种模块化工程路径(工程根目录/modules/xx模块/entity/xxx.class)

mybatis-plus:  mapper-locations: classpath:mapper/**/*.xml       #__对应第三步的mapper路径__  #实体扫描,多个package用逗号或者分号分隔  typeAliasesPackage: io.renren.modules.*.entity    #__对应第三步的entity路径__  global-config:    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";    id-type: 0    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"    field-strategy: 2    #驼峰下划线转换    db-column-underline: true    #刷新mapper 调试神器    refresh-mapper: true    #数据库大写下划线转换    #capital-mode: true    #序列接口实现类配置    #key-generator: com.baomidou.springboot.xxx    #逻辑删除配置    logic-delete-value: -1    logic-not-delete-value: 0    #自定义填充策略接口实现    #meta-object-handler: com.baomidou.springboot.xxx    #自定义SQL注入器    sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector  configuration:    map-underscore-to-camel-case: true    cache-enabled: false    call-setters-on-nulls: true复制代码

没添加mysq数据源的再添加如下配置

spring:    datasource:        continue-on-error: false        driver-class-name: com.mysql.jdbc.Driver        username: root                                       ##根据自己MySQL的用户名修改        url: jdbc:mysql://127.0.0.1:3306/renren_test  ##根据自己MySQL的ip和端口修改        password: root                                       ##根据自己MySQL的密码修改复制代码

第三步 进入正题

之前的步骤都是Mybatis的配置和管理,以下才是真正的业务代码
  1. entity 文件放在entity目录下(要与第二步的实体扫描路径对应,忽略的回去仔细看第二步)
@TableName("sword")public class Sword {    @TableId    private Long id;    private String name;}复制代码

之前用过JPA的可能直接运行发现并没有在数据库中建表,因为Mybatis不支持自动根据实体类创建表,所以需要自己建表,如果要引入这个功能可以引入JPA,只利用JPA的自动建表功能,本文为了简单明了不涉及,可以查看我另一篇文章

  1. mapper放在Dao目录下
@Repository@Mapperpublic interface SwordMapper {    Sword selectSword(Pagination page, String id);    void insertSword(            @Param("name") String name    );}复制代码
  1. xml(要与第二步的mapper扫描路径对应,忽略的回去仔细看第二步)
insert into sword (name) values (#{name})
复制代码

Mybatis框架的文件引入方式:

  • entity通过第二步的配置typeAliasesPackage进行查找,也可以通过注解方式查找
  • Mybatis的xml与mapper对应,mapper提供java层的接口,xml保存相对应的sql语句
  • xml在第二步的配置中由Mybatis发现,相对应的Mapper文件在xml中通过namespace的方式关联

最后一步 测试

在Controller文件中实现Restful接口 SwordController.class

@RestController@RequestMappingpublic SwordController {    @Autowired // 自动注入mapper    private SwordMapper swordMapper;        @GetMapping("sword")    public sword(UserEntity userEntity) {        Sword sword1 = new Sword();        sword1.setName("这是一把剑");        Sword sword = swordMapper.selectSword("1");        return sword;    }}复制代码

访问127.0.0.1:8080/demo/sword

大功告成!

后记

在其他的博客中大家可能看到,有很多利用sqlsession或者SqlSessionFactoryBean来加载Mybatis配置文件,我这里又没有sqlsession,经常有人会被搞得一头雾水,这里解释一下,在原生的mybatis中,sqlsession可以由SqlSessionFactory创建;而在mybatis-spring中则需要通过SqlSessionFactoryBean来创建,并传入datasource。 像这样

classpath:mybatis/mapper.xml
复制代码

但是在Springboot中,mybatis-spring-boot支持自动创建并注册SqlSessionFactoryBean,所以sqlsession的配置并不需要。感谢Springboot.

转载地址:http://zbica.baihongyu.com/

你可能感兴趣的文章
制作一款微信表情
查看>>
高仿Instagram 页面效果android特效
查看>>
jsonp跨域访问+AES,RSA加密
查看>>
我的友情链接
查看>>
Juniper 基于路由的×××
查看>>
OSI七层模型03——数据封装
查看>>
UMail轻松搭建linux邮件服务器(一体盘安装)
查看>>
HDU - 2018 - 母牛的故事(dp)
查看>>
51nod挑的部分5级题
查看>>
基于matlab的fft变换中参数的设置
查看>>
如何查找JSP页面中的错误
查看>>
2016 年总结
查看>>
Python学习开始
查看>>
VC6.0之Debug调试总结
查看>>
Android应用程序消息处理机制(Looper、Handler)分析(4)
查看>>
C++ 类成员的构造和析构顺序
查看>>
将String转化成Stream,将Stream转换成String
查看>>
POJ-1011 Sticks
查看>>
swat主流域文件(file.cio)参数详解——引自http://blog.sciencenet.cn/blog-922140-710636.html...
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>