介绍

mybatis-plus是国内大牛在Mybatis3的基础上做了一些封装,简化了一些操作(分页,自动生成实体块等)。是快速开发一个不错的工具插件。

Mybatis 增强工具包 - 只做增强不做改变,简化CRUD操作

优点

纯正血统:完全继承原生 Mybatis 的所有特性

最少依赖:仅仅依赖Mybatis以及Mybatis-Spring

性能损耗小:启动即会自动注入基本CURD ,性能无损耗,直接面向对象操作

自动热加载:Mapper对应的xml可以热加载,大大减少重启Web服务器时间,提升开发效率

自动生成代码:包含自动生成代码类以及Maven插件,通过少量配置,即可快速生成Mybatis对应的xml、mapper、entity、service、serviceimpl层代码,减少开发时间

自定义操作:支持自定义Sql注入,实现个性化操作

自定义转义规则:支持数据库关键词(例如:order、key等)自动转义,支持自定义关键词

多种主键策略:支持多达4种主键策略,可自由配置,若无将会自动填充,更有充满黑科技的分布式全局唯一ID生成器

无缝分页插件:基于Mybatis物理分页,无需关心具体操作,等同于编写基本selectList查询

性能分析:自带Sql性能分析插件,开发测试时,能有效解决慢查询

全局拦截:提供全表delete、update操作智能分析阻断

避免Sql注入:内置Sql注入内容剥离器,预防Sql注入攻击

我的感受

我们项目是spring-boot + mybatis-plus,官方也有一个这样的Demo,在搭建一些比较套路的工程还是很节约时间的,它自动生成代码的插件可以生成 Entity.mapper,Entity.java,EntityVo.java,EntityBusinessController.java,EntityService.java,IEntityMapper.java等一系列Spring mvc文件架构,大大节约了开发时间。但是就JDBCUtil来说,它还是比较单薄的,只提供了基本的增删查改,用起来可能没有自己写的工具类好用,但这些都可以根据自己习惯和数据结构封装进去的。另外就是作者定义的一套规则我们需要注意一下,否则可能在开发过程中要话费额外的时间去找bug。

遇到的问题

返回的list只有数据库字段不含大写的属性

通常生成的mapper.xml如下:

SELECT * FROM fund_account

我们发现在控制层去调用.selectObjPage方法时,返回值只有id和realname有信息,找了一下发现是返回值的原因。我们在实体类中做了数据绑定

Entity.java

package com.senthink.www.micat.domain.po;

import com.baomidou.mybatisplus.annotations.IdType;

import com.baomidou.mybatisplus.annotations.TableField;

import com.baomidou.mybatisplus.annotations.TableId;

import com.baomidou.mybatisplus.annotations.TableName;

@TableName("fund_account")

public class TestEntity {

@TableId(type = IdType.AUTO)

private Integer id;

@TableField(value = "user_id")

private String userId;

private String realname;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId;

}

public String getRealname() {

return realname;

}

public void setRealname(String realname) {

this.realname = realname;

}

}

而实体的数据绑定是通过mapper.xml中

来完成连接的。所以,当你想返回TestEntity实体类型的时候必须要返回的是这个定义的resultMap,即把

修改为

即可。

setDbColumnUnderline导致的字段不一致

mybatis-plus的setDbColumnUnderline设置使得数据库字段强行按照java实体的骆驼式命名法大写字母前转化为下划线加小写的命名规范。

如TestEntity中的userId在拼装sql语句时自动对应为userId,所以这就要求你实体命名和数据库字段名必须满足这个规则,若出现不满足规则的命名,如

passwordMD5,将被编译为password_m_d5这样就会报sql错误了。

解决办法:

按照规范命名,对未规范的命名全部修改

设置不用其下划线命名法,在MybatisPlusConfig.java中设置

MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();

mybatisPlus.setDbColumnUnderline(true);

map比vo效率 mybatis_mybatis-plus插件使用的一些问题相关推荐

  1. map比vo效率 mybatis_resultMap

    resultmap与resulttype的区别为:对象不同.描述不同.类型适用不同 一.对象不同 1.resultmap:resultMap如果查询出来的列名和pojo的属性名不一致,通过定义一个re ...

  2. 基于bim技术的应用软件有哪些?提高bim工作效率的revit插件?

    基于bim技术的应用软件有哪些?提高bim工作效率的revit插件? 基于BIM技术应用的软件繁多,不需要统计小编知道的就有几十种,一个公司开发的bim软件至少都是3-5种左右,更不用说众多的开发公司 ...

  3. html沙盘图插件,3D Map Generator(3D沙盘设计PS插件)V1.0 正式版

    3D Map Generator(3D沙盘设计PS插件)是一款很优秀好用的3D沙盘设计辅助工具.如果你需要一款好用的沙盘设计工具,小编带来的这款3D Map Generator软件是很不错的选择,功能 ...

  4. 基于bim技术的应用软件有?哪些提高bim工作效率的revit插件

    bim技术应用有哪些?bim技术的应用可是各种各样,感觉现在的建筑行业已经离不开bim的技术应用了,从宏观到微观,从大到小,从人到物,已经方方面面时刻影响着工程的生命周期.下面我就挑选三个bim技术应 ...

  5. 建筑、结构和机电应的建模都要会Revit等软件?提高效率的revit插件?

    学习BIM的朋友经常会有一个问题.我从事具体的专业.为什么建筑.结构和机电应的建模我都要会? 事实上,你不仅要掌握建构.建筑.机电和族的建模能力,至少还要掌握Revit.CAD.Navisworks和 ...

  6. 3种场景不同方法遍历Map集合的效率比较

    文章目录 测试用例 测试场景 同时遍历 key+value keySet利用Iterator遍历 keySet利用for遍历 entrySet利用Iterator遍历 entrySet利用for遍历 ...

  7. 日常办公提升效率软件(chrome插件、Octave、BOINC、FLIQLO)

    ###1. chrome扩展程序 Listen1 网易.虾米.qq三大音乐播放平台应有尽有,不在下载本地播放器,也不要担心某一播放器的版权问题,界面简洁,偶尔有bug,已经是我的日常听歌首选了. 2. ...

  8. bpmn如何查看代码 idea_提高程序员效率的IDEA插件推荐(五大神器)

    1. SequenceDiagram SequenceDiagram 可以根据代码调用链路自动生成时序图,超级赞,超级推荐! 这对研究源码,梳理工作中的业务代码有极大的帮助,堪称神器. 安装完成后,在 ...

  9. 你知道这个提高 Java 单元测试效率的 IDEA 插件吗

    前言 2023年我们公司主抓代码质量,所以单元测试必不可少,而且都写到了年底的绩效目标中了.在考虑如何达成这个目标的过程中,我发现了一个关于单元测试的IDEA插件--SquareTest,它可以帮助我 ...

最新文章

  1. verdi windows版本[使用debussy 5.4]
  2. 安卓应用在各大应用市场上架方法整理
  3. Flume1.7.0的安装与使用
  4. 1.const关键字.rs
  5. formidable处理提交的表单或文件的简单介绍
  6. Sublime Text如何安装和卸载插件
  7. BPP 相关——02
  8. 当.NET遇到SYBASE
  9. JavaEE 微信支付
  10. 【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
  11. Windows下同步工具FastCopy
  12. 苹果更新系统微信收不到服务器,苹果手机升级iOS12后微信无法提示新消息的解决办法 亲测有效...
  13. 如何给C盘扩容?亲测有效
  14. promise的意义和用法
  15. PHP获取服务器图片并添加水印
  16. 宝塔+青龙面板+机器人+诺兰
  17. java 约分_约分的方法
  18. android怎么装windows系统,普通电脑怎么装Windows和安卓的双系统?
  19. MinGW和GCC所有版本下载地址
  20. 超级计算机的配置,第一章 最新GPU并行计算超级计算机配置全集.pdf

热门文章

  1. 必须要GPT-3吗?不,BERT的MLM模型也能小样本学习
  2. CVPR 2020 | 港中文提出3D目标检测新框架DSGN
  3. 寻找想改变人工智能的“大人物”!2019百度奖学金正式启动
  4. 数学建模第五节2020.5.8-17补
  5. 浅谈如何学习深度学习(经验之谈,仅供参考)
  6. MyBatis mapper代理方式
  7. python内置函数源代码_4.内置函数源码总结
  8. easyui有没有html编辑器,【easyui】kindeditor富文本(html编辑器)的使用
  9. sqlite to mysql_SqliteToMysql官方版
  10. 【Jenkins持续集成】docker部署+配置+操作Jenkins