一、通用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的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  3. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  4. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  5. mybatis plugins实现项目【全局】读写分离

    在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...

  6. MyBatis基础入门--知识点总结

    对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...

  7. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  8. MyBatis源码分析(一)开篇

    源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...

  9. (整理)MyBatis入门教程(一)

    本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...

  10. MyBatis6:MyBatis集成Spring事物管理(下篇)

    前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...

随机推荐

  1. docker~swarm搭建docker高可用集群

    回到目录 Swarm概念 Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docker API接口作为其前端访问入 ...

  2. 【Python3爬虫】常见反爬虫措施及解决办法(一)

    这一篇博客,是关于反反爬虫的,我会分享一些我遇到的反爬虫的措施,并且会分享我自己的解决办法.如果能对你有什么帮助的话,麻烦点一下推荐啦. 一.UserAgent UserAgent中文名为用户代理,它 ...

  3. Generator和Async

    引言 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还有一种常用的解决方案,它就 ...

  4. python 自定义模块的发布和安装

    [学习笔记] 自定义模块 使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub& ...

  5. Java 原始模型(Prototype)模式

    一.什么是原型模式: 通过给出一个原型对象指明所要创建的对象的类型,然后通过复制这个原型对象来获取的更多的同类型的对象. 在Java语言中,支持原型模式,所有的对象都继承自Object对象,Objec ...

  6. 学习day02

    day021.结构标记 ***** 做布局 1.<header>元素 <header></header> ==> <div id="heade ...

  7. Dynamics 365-关于Solution的那些事(二)

    接着上一篇的说,现在有一个已知前提:Solution的增量特性.然后我们再思考这么一个场景,项目开发过程中,存在多次迭代的情况,每次迭代可能涉及到的solution是同一个,唯一区别的,就是solut ...

  8. Oracle字符到数值转换错误

    [错误] [问题分析] line 3: 定义 NUM_VAL varchar2(500); line 9: NUM_VAL := 'NUM'+1; NUM_VAL是一个varchar类型的数据,而在数 ...

  9. MongoDB 中数据的替换方法实现 --类Replace()函数功能

    关键字: MongoDB,Replace,forEach 近日接到一个开发需求,因业务调整,需要DBA协助,将MongoDB数据库中某集合的进行替换.例如我们需要将集合A中B字段中,有关<美好& ...

  10. row_number() over()分页查询

    1.首先讲下row_number() over() 是干什么的? 是一个分析函数,会在数据表生成一个排序列. 案例SQL: select ROW_NUMBER() over(order by book ...