欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于mybatis-plus插件使用時的一些問題小結(jié)

 更新時間:2022年03月08日 10:47:35   作者:syncwt  
這篇文章主要給大家介紹了關(guān)于mybatis-plus插件使用時的一些問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

介紹

mybatis-plus是國內(nèi)大牛在Mybatis3的基礎(chǔ)上做了一些封裝,簡化了一些操作(分頁,自動生成實體塊等)。是快速開發(fā)一個不錯的工具插件。

Mybatis 增強工具包 - 只做增強不做改變,簡化CRUD操作

優(yōu)點

純正血統(tǒng):完全繼承原生 Mybatis 的所有特性
最少依賴:僅僅依賴Mybatis以及Mybatis-Spring
性能損耗?。簡蛹磿詣幼⑷牖綜URD ,性能無損耗,直接面向?qū)ο蟛僮?br />自動熱加載:Mapper對應(yīng)的xml可以熱加載,大大減少重啟Web服務(wù)器時間,提升開發(fā)效率
自動生成代碼:包含自動生成代碼類以及Maven插件,通過少量配置,即可快速生成Mybatis對應(yīng)的xml、mapper、entity、service、serviceimpl層代碼,減少開發(fā)時間
自定義操作:支持自定義Sql注入,實現(xiàn)個性化操作
自定義轉(zhuǎn)義規(guī)則:支持?jǐn)?shù)據(jù)庫關(guān)鍵詞(例如:order、key等)自動轉(zhuǎn)義,支持自定義關(guān)鍵詞
多種主鍵策略:支持多達4種主鍵策略,可自由配置,若無將會自動填充,更有充滿黑科技的分布式全局唯一ID生成器
無縫分頁插件:基于Mybatis物理分頁,無需關(guān)心具體操作,等同于編寫基本selectList查詢
性能分析:自帶Sql性能分析插件,開發(fā)測試時,能有效解決慢查詢
全局?jǐn)r截:提供全表delete、update操作智能分析阻斷
避免Sql注入:內(nèi)置Sql注入內(nèi)容剝離器,預(yù)防Sql注入攻擊

我的感受

我們項目是spring-boot + mybatis-plus,官方也有一個這樣的Demo,在搭建一些比較套路的工程還是很節(jié)約時間的,它自動生成代碼的插件可以生成 Entity.mapper,Entity.java,EntityVo.java,EntityBusinessController.java,EntityService.java,IEntityMapper.java等一系列Spring mvc文件架構(gòu),大大節(jié)約了開發(fā)時間。但是就JDBCUtil來說,它還是比較單薄的,只提供了基本的增刪查改,用起來可能沒有自己寫的工具類好用,但這些都可以根據(jù)自己習(xí)慣和數(shù)據(jù)結(jié)構(gòu)封裝進去的。另外就是作者定義的一套規(guī)則我們需要注意一下,否則可能在開發(fā)過程中要話費額外的時間去找bug。

遇到的問題

返回的list只有數(shù)據(jù)庫字段不含大寫的屬性

通常生成的mapper.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.domain.po.IFundAccountMapper">

    <!-- 通用查詢結(jié)果列-->
    <resultMap id="TestEntityMap" type="com.test.domain.po.FundAccount">
        <id column="id" property="id"/>
        <result column="user_id" property="userId"/>
        <result column="realname" property="realname"/>
    </resultMap>

    <select id="selectObjPage" resultType="TestEntity">
        SELECT * FROM fund_account
    </select>

</mapper>

我們發(fā)現(xiàn)在控制層去調(diào)用.selectObjPage方法時,返回值只有id和realname有信息,找了一下發(fā)現(xiàn)是返回值的原因。我們在實體類中做了數(shù)據(jù)綁定
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;
    }
}

而實體的數(shù)據(jù)綁定是通過mapper.xml中
<resultMap id="TestEntityMap" type="com.test.domain.po.FundAccount">來完成連接的。所以,當(dāng)你想返回TestEntity實體類型的時候必須要返回的是這個定義的resultMap,即把
<select id="selectObjPage" resultType="TestEntity">修改為
<select id="selectObjPage" resultMap="TestEntityMap">即可。

setDbColumnUnderline導(dǎo)致的字段不一致

mybatis-plus的setDbColumnUnderline設(shè)置使得數(shù)據(jù)庫字段強行按照java實體的駱駝式命名法大寫字母前轉(zhuǎn)化為下劃線加小寫的命名規(guī)范。
TestEntity中的userId在拼裝sql語句時自動對應(yīng)為userId,所以這就要求你實體命名和數(shù)據(jù)庫字段名必須滿足這個規(guī)則,若出現(xiàn)不滿足規(guī)則的命名,如
passwordMD5,將被編譯為password_m_d5這樣就會報sql錯誤了。
解決辦法:

  • 按照規(guī)范命名,對未規(guī)范的命名全部修改
  • 設(shè)置不用其下劃線命名法,在MybatisPlusConfig.java中設(shè)置
MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
mybatisPlus.setDbColumnUnderline(true);

總結(jié)

到此這篇關(guān)于mybatis-plus插件使用時的一些問題的文章就介紹到這了,更多相關(guān)mybatis-plus插件使用問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論