[Java]MybatisPlus

MybatisPlus

MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变. 为简化开 发工作、提高生产率而生

  • 官方地址: http://mp.baomidou.com
  • 代码发布地址: Github:https://github.com/baomidou/mybatis-plus
    Gitee: https://gitee.com/baomidou/mybatis-plus
    文档发布地址: http://mp.baomidou.com/#/id=%E7%AE%80%E4%BB%8B

优点

  • 无侵入
  • 依赖少
  • 预防sql注入
  • 通用crud(内置通用mapper)

集成MP

创建测试表

创建 javaBean

  • java bean要与表中字段对应
  • 成员变量均使用包装类型(Integer),而不用基本类型,是因为mybatis,MP,操作成员变量时会进行非空判断,使用基本类型会存在默认值(int默认0,boolean为false,所以很难判断当前字段是否为空,所以都要尽量使用包装类型)

依赖配置

  • 在 pom.xml 中加入对 MP、Spring、连接池、Junit、Mysql 驱动等依赖
    ( Mybatis 及 Mybatis-Spring 依赖请勿加入项目配置,以免引起版本冲突!!! Mybatis-Plus 会自动帮你维护!
    )
<!-- mp 依赖 -->  
 	<dependency>       
 		<groupId>com.baomidou</groupId> 
 		<artifactId>mybatis-plus</artifactId>       		
 	    <version>2.3</version> 
 	</dependency>   
<!--junit --> 
	<dependency> 
		<groupId>junit</groupId> 
		<artifactId>junit</artifactId> 
		<version>4.9</version> 
	</dependency>
	<!-- log4j -->  
	<!-- c3p0 --> 
	<!-- mysql --> 
	<!-- spring --> 
  • 加入 MyBatis 的全局配置文件(Mybatis-config-xml)
没做任何配置

<?xml version="1.0" encoding="UTF-8" ?> 
 <!DOCTYPE configuration 
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
 <configuration> 
 </configuration> 
  • 加入 log4j.xml
  • 加入 db.properties 连接信息配置
jdbc.driver=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/mp
jdbc.username=root  
jdbc.password=1234 

  • 加入 spring 的配置文件 applicationContext.xml

    • < !-- 数据源 -->
    • < !-- 事务管理器 --> < !-- 基于注解的事务管理 -->
    • < !-- 配置 SqlSessionFactoryBean --> <bean
    • 配置 mybatis 扫描 mapper 接口的路径

集成 MP

  • Mybatis-Plus 的集成非常简单,对于 Spring,我们仅仅需要把 Mybatis 自带 MybatisSqlSessionFactoryBean 替换为 MP 自带的即可
applicationContext.xml
 <!--  配置 SqlSessionFactoryBean  --> 
<bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> 



原mybatis提供的为
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> 

入门HelloWorld

通用CRUD

  • 基于 Mybatis

    • 需要编写 EmployeeMapper 接口,并手动编写 CRUD 方法
    • 提供 EmployeeMapper.xml 映射文件,并手动编写每个方法对应的 SQL 语句.
  • 基于 MP

    • 只需要创建 EmployeeMapper 接口, 并继承 BaseMapper 接口.这就是使用 MP 需要完成的所有操作,甚至不需要创建 SQL 映射文件
  • Mapper继承BaseMapper接口后,无需编写mapper.xml,即可获得CRUD功能

    • 这个接口中已经定义好了很多CRUD方法

插入操作

Integer insert(T entity);
insertAllColumn(T entity)

@TableId

  • Value:指定表中的主键列的列名,如果实体属性名和列名一致,可以省略
  • type: 指定主键策略

@TableName

  • MP会默认会默认使用实体类的类名到数据库中找对应的表
  • 用表名注解当前实体类对应的表名

@TableField

  • 实体类中的属性与数据库中类名不一致时可用该注解指明
  • 实体类的成员变量对应在数据库中的字段是什么

MP的全局配置策略

  • 在applicationCpntext中配置

  • 如数据库字段下划线到实体类驼峰命名的映射的解决

  • 配置完后还需要注入全局MP策略配置

支持主键自增的数据库插入数据获取主键值

  • Mybatis: 需要通过 useGeneratedKeys 以及 keyProperty 来设置
  • MP: 自动将主键值回写到实体类中

insertALLColumn

  • Insert方法插入时,会根据实体类的每个属性进行非空判断,只有非空属性对应的字段才会出现在SQL

  • insertALLColumn在插入时,不管属性是否为空,属性所对应的字段都会出现在SQL中

更新操作

  • Integer updateById(@Param(“et”) T entity); 会做非空判断,空的不会出现在SQL中
  • Integer updateAllColumnById(@Param(“et”) T entity);不会做非空判断

查询操作

  • T selectById(Serializable id);

  • T selectOne(@Param(“ew”) T entity);
    将几个列组合成一个对象,封装成对象,传入select语句进行查询

  • List selectBatchIds(List<? extends Serializable> idList
    通过多个id进行批量查询,封装成对象集合传出

  • List selectByMap(@Param(“cm”) Map<String, Object> columnMap);
    通过map封装条件查询,注意封装条件时要用数据库的字段名而不能用属性名

  • List selectPage(RowBounds rowBounds, @Param(“ew”) Wrapper wrapper);
    分页查询(基于Mybatis的rowbounds对象实现)

删除操作

  • Integer deleteById(Serializable id);
  • Integer deleteByMap(@Param(“cm”) Map<String, Object> columnMap)
    用map封装删除条件
  • Integer deleteBatchIds(List<? extends Serializable> idList)

MP启动注入SQL原理分析

条件构造器EntityWrapper

  • Mybatis-Plus 通过 EntityWrapper(简称 EW,MP 封装的一个查询条件构造器)或者 Condition(与 EW 类似)来让用户自由的构建查询条件,简但快捷,提高开发效率
  • 实体包装器EntityWrapper主要用于处理sql 拼接,排序,实体参数查询等
  • 注意: 使用的是数据库字段,不是Java属性

ActiveRecord(活动记录)

Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的 一个表,而模型类的一个实例对应表中的一行记录

代码生成器

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辣椒本椒

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值