map比vo效率 mybatis_mybatis-plus插件使用的一些问题
介绍
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插件使用的一些问题相关推荐
- map比vo效率 mybatis_resultMap
resultmap与resulttype的区别为:对象不同.描述不同.类型适用不同 一.对象不同 1.resultmap:resultMap如果查询出来的列名和pojo的属性名不一致,通过定义一个re ...
- 基于bim技术的应用软件有哪些?提高bim工作效率的revit插件?
基于bim技术的应用软件有哪些?提高bim工作效率的revit插件? 基于BIM技术应用的软件繁多,不需要统计小编知道的就有几十种,一个公司开发的bim软件至少都是3-5种左右,更不用说众多的开发公司 ...
- html沙盘图插件,3D Map Generator(3D沙盘设计PS插件)V1.0 正式版
3D Map Generator(3D沙盘设计PS插件)是一款很优秀好用的3D沙盘设计辅助工具.如果你需要一款好用的沙盘设计工具,小编带来的这款3D Map Generator软件是很不错的选择,功能 ...
- 基于bim技术的应用软件有?哪些提高bim工作效率的revit插件
bim技术应用有哪些?bim技术的应用可是各种各样,感觉现在的建筑行业已经离不开bim的技术应用了,从宏观到微观,从大到小,从人到物,已经方方面面时刻影响着工程的生命周期.下面我就挑选三个bim技术应 ...
- 建筑、结构和机电应的建模都要会Revit等软件?提高效率的revit插件?
学习BIM的朋友经常会有一个问题.我从事具体的专业.为什么建筑.结构和机电应的建模我都要会? 事实上,你不仅要掌握建构.建筑.机电和族的建模能力,至少还要掌握Revit.CAD.Navisworks和 ...
- 3种场景不同方法遍历Map集合的效率比较
文章目录 测试用例 测试场景 同时遍历 key+value keySet利用Iterator遍历 keySet利用for遍历 entrySet利用Iterator遍历 entrySet利用for遍历 ...
- 日常办公提升效率软件(chrome插件、Octave、BOINC、FLIQLO)
###1. chrome扩展程序 Listen1 网易.虾米.qq三大音乐播放平台应有尽有,不在下载本地播放器,也不要担心某一播放器的版权问题,界面简洁,偶尔有bug,已经是我的日常听歌首选了. 2. ...
- bpmn如何查看代码 idea_提高程序员效率的IDEA插件推荐(五大神器)
1. SequenceDiagram SequenceDiagram 可以根据代码调用链路自动生成时序图,超级赞,超级推荐! 这对研究源码,梳理工作中的业务代码有极大的帮助,堪称神器. 安装完成后,在 ...
- 你知道这个提高 Java 单元测试效率的 IDEA 插件吗
前言 2023年我们公司主抓代码质量,所以单元测试必不可少,而且都写到了年底的绩效目标中了.在考虑如何达成这个目标的过程中,我发现了一个关于单元测试的IDEA插件--SquareTest,它可以帮助我 ...
最新文章
- verdi windows版本[使用debussy 5.4]
- 安卓应用在各大应用市场上架方法整理
- Flume1.7.0的安装与使用
- 1.const关键字.rs
- formidable处理提交的表单或文件的简单介绍
- Sublime Text如何安装和卸载插件
- BPP 相关——02
- 当.NET遇到SYBASE
- JavaEE 微信支付
- 【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
- Windows下同步工具FastCopy
- 苹果更新系统微信收不到服务器,苹果手机升级iOS12后微信无法提示新消息的解决办法 亲测有效...
- 如何给C盘扩容?亲测有效
- promise的意义和用法
- PHP获取服务器图片并添加水印
- 宝塔+青龙面板+机器人+诺兰
- java 约分_约分的方法
- android怎么装windows系统,普通电脑怎么装Windows和安卓的双系统?
- MinGW和GCC所有版本下载地址
- 超级计算机的配置,第一章 最新GPU并行计算超级计算机配置全集.pdf
热门文章
- 必须要GPT-3吗?不,BERT的MLM模型也能小样本学习
- CVPR 2020 | 港中文提出3D目标检测新框架DSGN
- 寻找想改变人工智能的“大人物”!2019百度奖学金正式启动
- 数学建模第五节2020.5.8-17补
- 浅谈如何学习深度学习(经验之谈,仅供参考)
- MyBatis mapper代理方式
- python内置函数源代码_4.内置函数源码总结
- easyui有没有html编辑器,【easyui】kindeditor富文本(html编辑器)的使用
- sqlite to mysql_SqliteToMysql官方版
- 【Jenkins持续集成】docker部署+配置+操作Jenkins