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插件使用的一些问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python str 换行_Python
- 下一篇: python包管理工具 ports_Ma