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的事物的做法,本文的目的是在这个的基 ...
随机推荐
- MyX5TbsPlusDemo【体验腾讯浏览服务Android SDK (TbsPlus 版)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:只需接入aar文件和调用一个接口即可完成TBS接入,我们会通过全屏Activity展示TBS WebView,适用 ...
- 完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存
PHPstudy与原Mysql兼容解决 一.前言 今天学习php,当然是要先安装好运行环境了,phpstyudy是一个运行php的集成环境, 一键安装对新手很友好,与时作为一个新手,便跟着教程安装了p ...
- 学习ASP.NET Core Razor 编程系列十六——排序
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 让ASP.NET Core支持GraphQL之-GraphQL的实现原理
众所周知RESTful API是目前最流行的软件架构风格之一,它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RESTful的优越性是毋庸置疑 ...
- python 文件和目录操作题库
1. 把一个目录下所有的文件删除,在所有的目录下新建一个a.txt的文件,并在文件下写入"python"关键字. 解题思路: 1.如果目录存在则切换进入目录 ...
- javascript小记四则:用JS写一个滚动横条文字,可以根据需要进行修改;
网页上的一些广告文字,一直会滚动是怎么做到的,今天给大家演示下,非常简单,源码如下(本案例是在.net平台上,但HTML是通用的): <!DOCTYPE html> <html> ...
- 禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?
虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disa ...
- react native中一次错误排查 Error:Error: Duplicate resources
最近一直在使用react native中,遇到了很多的坑,同时也学习到了一些移动端的开发经验. 今天在做一个打包的测试时,遇到了一个问题,打包过程中报错“Error:Error: Duplicate ...
- findlibrary returned null
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10181330.html 该错误是在加载so库的时候出现的,就是找不到so库. 一.检查jinLibs目录 ...
- Mac10.12下Python3.4调用oracle
最近,由于项目的短信平台对其它浏览器兼容,只支持IE,但是我们移动端自动化需要测试iphone手机,必须要连接MAC系统下,众所周知,MAC对IE的不友好性,故没办法通过短信平台在UI层自动化获取短信 ...