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的事物的做法,本文的目的是在这个的基 ...
随机推荐
- Asp.Net Core中服务的生命周期选项区别和用法
在做一个小的Demo中,在一个界面上两次调用视图组件,并且在视图组件中都调用了数据库查询,结果发现,一直报错,将两个视图组件的调用分离,单独进行,却又是正常的,寻找一番,发现是配置依赖注入服务时,对于 ...
- Spring Boot 2.x :通过 spring-boot-starter-hbase 集成 HBase
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本文内容 HBase 简介和应用场景 spring-boot- ...
- 利用shell脚本生成CHANGELOG.md(包含git提交规范)
前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...
- 如何开发AR增强现实应用与产品
2016年被称为VR元年,可见火爆程度,但是我要告诉你,其实还有一种技术AR(增强现实)技术,才是下一个真正的“风口”技术.可以预见的是,未来AR应用爆发之时,必将超越VR产业规模,开拓千亿级市场空间 ...
- Node.js学习(第一章:Node.js简介)
Node.js是什么? Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 12.0.0版本,最新稳定的是10.15.3.Nod ...
- 玩转Spring Cloud之熔断降级(Hystrix)与监控
本文内容导航目录: 前言:解释熔断降级一.搭建服务消费者项目,并集成 Hystrix环境 1.1.在POM XML中添加Hystrix依赖(spring-cloud-starter-netflix-h ...
- asp.net后台管理系统-登陆模块-是否自动登陆
FormsAuthentication.SetAuthCookie(UserFlag, createPersistentCookie); createPersistentCookie是否永久保存coo ...
- [转帖]无网络离线安装 vs2017
无网络离线安装 vs2017 公司电脑禁止,只有一个老的vs2017的安装目录(之前通过 --layout 安装时生成的离线文件).找了一圈百度,没能解决问题,最后,问bing,查微软的官方网站命令, ...
- mybatis bug之org.apache.ibatis.exceptions.PersistenceException:
详细报错信息: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java. ...
- mysql索引结构及其原理
1.定义 索引是一种数据结果,帮助提高获取数据的速度 为了提高查找速度,有很多查询优化算法.但是每种查找算法都只能应用于特定数据结构之上. 索引就是数据库创建的满足特定查找算法的数据结构,这些数据结构 ...