MyBatis-Plus
一、通用SQL
1.简介:(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
2.定义Javabean中成员变量所使用的的类型:建议使用包装类型。因为每个基本类型都有一个默认值,如:int =>0 ,boolean=> flase.所以mybatis很难去判断当前是否为空。p.s. 包装类型默认值统一为 null
3.引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。
4.关于mapper接口:
- 基于mybatis :在mapper接口中编写CRUD方法,提供mapper接口所对应的sql语句
- 基于mp:只需要让mapper接口继承BaseMapper 。BaseMapper :泛型T指定当前接口所操作的实体类型。
public interface EmployeeMapper extends BaseMapper<Employee> {
}
5.BaseMapper:继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能。该接口帮我们定义好了常用的CRUD方法。
6.注解: 参考文档
- @TableId :主键注解。属性:value主键字段名;type 主键类型,指定主键策略
@TableId(value = "id",type = IdType.AUTO) //type枚举类型
private Integer id ; //包装类型
- @TableName:表名注解,指定表名。属性:value 指定表名。
/**
* mybatis默认拿实体的类名去数据库中找对应的表
*/
@TableName(value = "tbl_employee")
public class Employee {
- @TableField:字段注解(非主键),用来指定数据库中的字段。属性:exist 是否为数据库表字段。
@TableField(value = "last_name")
private String lastName;
7.mybatisplus的全局策略配置:
<!--定义mybatisplus的全局策略配置-->
<bean id="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!--在2.3版本以后默认开启 ,下划线转驼峰标识-->
<property name="dbColumnUnderline" value="true"></property>
<!--全局的主键策略-->
<property name="idType" value="0"></property>
<!--表前缀配置-->
<property name="tablePrefix" value="tbl_"></property>
</bean>
<!-- 别忘了将全局配置添加到 SqlSessionFactoryBean -->
<bean id="sqlSessionFactoryBean"
class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<!-- mybatisplus全局配置 -->
<property name="globalConfig" ref="globalConfiguration"></property>
</bean>
8.insert操作:
- insert方法在插入时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中。
- insertAllColumn方法在插入时,不管属性是否非空,属性所对应的字段都会出现到SQL语句中。
Employee employee = new Employee(null,"夏洛","12450237886@qq.com",1,20);
//操作成功的条数
Integer result = employeeMapper.insert(employee);
System.out.println("result:"+result);
//mybatisplus会自动将插入的id放到employee对象中
System.out.println("index:"+employee.getId());
9.update更新:
- updateById(@Param("et") T entity);非空时则更新该字段。
- updateAllColumnById(@Param("et") T entity);更新所有字段。
10.Select查询:
- T selectById(Serializable id); 根据主键id查询;
- T selectOne(@Param("ew") T entity);通过多个列查询;
- List selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);根据id列表查询
- List selectByMap(@Param("cm") Map<String, Object> columnMap);根据map中封装的条件查询
- List selectPage(RowBounds rowBounds, @Param("ew") Wrapper wrapper);分页查询;
11.Delete删除:
- Integer deleteById(Serializable id);根据 ID 删除
- Integer deleteByMap(@Param("cm") Map<String, Object> columnMap);根据 columnMap 条件,删除记录
- Integer deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);根据ID 批量删除
二、MP启动注入SQL原理分析
MyBatis-Plus的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- mybatis plugins实现项目【全局】读写分离
在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...
- MyBatis基础入门--知识点总结
对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- MyBatis源码分析(一)开篇
源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...
- (整理)MyBatis入门教程(一)
本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
随机推荐
- .Net Framework项目引用.NetStandard标准库出现版本冲突解决办法
今天在工作中出现一个引用问题,害我找问题找了很久.起因是在一个Winform项目下需要引用一个.NetStandard标准库,标准库引用了System.ComponentModel.Annotatio ...
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生. 串口调试助手是嵌入式开发里非常常用的小工具,市面上有非常多流行的串口调试工具,比如TeraTe ...
- Cayley图数据库的可视化(Visualize)
引入 在文章Cayley图数据库的简介及使用中,我们已经了解了Cayley图数据库的安装.数据导入以及进行查询等. Cayley图数据库是Google开发的开源图数据库,虽然功能还没有Neo4 ...
- 使用C# 操作存储过程,执行sql语句通用类
如何使用C# 操作存储过程,执行sql语句? 闲话不多说,直接上代码: /// <summary> /// Sql通用类 /// </summary> ...
- 九九乘法表-for循环
1.打印在左上角 #直角在左上方 for i in range(9,0,-1): for j in range(1,10): if j <= i: print("{}*{}={}&qu ...
- 代码托管-gerrit-介绍与环境搭建
什么是gerrit? 转载自 https://blog.csdn.net/tanshizhen119/article/details/79874127 gerrit是谷歌开源的一个git服务端. 主要 ...
- Python绘图与可视化
Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用 ...
- .net 获取时间十二进制与二十四进制
[说明] visual studio工具,.net项目,获取时间 [易错问题] ①二十四小时制(HH小时大写) System.DateTime.Now.ToString("yyyy-MM-d ...
- Ionic3关闭弹出页面,跳转到列表后刷新父页面
记得上次写过一篇如何弹出页面的文章,好像是2月28号ionic3 Modal组件那一篇,这篇也算那一篇的续集吧!这篇是弹出的页面关闭后刷新父页面的干活!上代码! 弹出页面:(关闭的时候可以传入值,再父 ...
- 从0开始的Python学习013编写一个Python脚本
通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本. 问题 需求: 我想要一个可以给我备份重要文件的程序. 需求分析: 首先文件是有存储路径,文件的路径和 ...