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

mybaties plus實(shí)體類設(shè)置typeHandler不生效的解決

 更新時(shí)間:2022年08月23日 14:15:28   作者:飄零未歸人  
這篇文章主要介紹了mybaties plus實(shí)體類設(shè)置typeHandler不生效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

實(shí)體類設(shè)置typeHandler不生效問題

實(shí)體類:

@Data
@TableName(value = "centre_manage_server_info")
public class ServerEntity {
 
    @TableId(value = "id")
    //@Column(name = "id", isKey = true, isNull = false, comment = "id" )
    private String id;
 
    /**
     * 服務(wù)器ip
     */
    @TableField(value = "ip", insertStrategy = FieldStrategy.NOT_EMPTY)
    //@Column(name = "ip", isNull = false, comment = "服務(wù)器ip" )
    private String ip;
    /**
     * 服務(wù)器port
     */
    @TableField(value = "port",  insertStrategy = FieldStrategy.NOT_NULL)
    //@Column(name = "port", isNull = false, comment = "服務(wù)器port" )
    private Integer port;
    /**
     * 服務(wù)器登錄用戶名
     */
    @TableField(value = "authentication_name", typeHandler = AesTypeHandler.class, insertStrategy = FieldStrategy.NOT_EMPTY)
    //@Column(name = "authentication_name", isNull = false, comment = "服務(wù)器登錄用戶名" )
    private String authenticationName;
    /**
     * 服務(wù)器登錄密碼
     */
    @TableField(value = "authentication_pwd", typeHandler = AesTypeHandler.class, insertStrategy = FieldStrategy.NOT_EMPTY)
    //@Column(name = "authentication_pwd", isNull = false, comment = "服務(wù)器登錄密碼" )
    private String authenticationPwd;
 
}

結(jié)果插入時(shí)時(shí)有效的,但是i查詢時(shí)會(huì)出現(xiàn)部分沒有解密的問題。

解決

1.實(shí)體類注解TableName  補(bǔ)充  autoResultMap = true

@TableName(value = "centre_manage_server_info", autoResultMap = true)

2.mapper.xml的resultMap也需要 

<resultMap id="ServerEntity" type="com.zhong.core.centremanage.dbservice.server.entity.ServerEntity">
? ? ? ? <id column="id" property="id" />
? ? ? ? <result column="ip" property="ip" />
? ? ? ? <result column="port" property="port" />
? ? ? ? <result column="authentication_name" property="authenticationName" typeHandler="xxxx.AesTypeHandler"/>
? ? ? ? <result column="authentication_pwd" property="authenticationPwd" typeHandler="xxxx.AesTypeHandler"/>
? ? </resultMap>

mybaties中TypeHandler的使用 

在實(shí)際項(xiàng)目中,有一個(gè)物品表,其中有一個(gè)規(guī)格的字段,存入了JSON數(shù)組的字符串,但是后續(xù)在使用實(shí)體類的過程中,發(fā)現(xiàn)些不方便,到處要轉(zhuǎn) String 和 String[]很不方便。因此希望可以直接映射。

解決

發(fā)現(xiàn)網(wǎng)上有一個(gè)TypeHandler可以做到枚舉和數(shù)據(jù)字段的相互對應(yīng),那么用來做數(shù)組和String的轉(zhuǎn)化應(yīng)該也是可以的。代碼如下:

@MappedTypes({String[].class})
@MappedJdbcTypes({JdbcType.VARCHAR})
public class StringArrayTypeHandler implements TypeHandler<String[]> {
? ? @Override
? ? public void setParameter(PreparedStatement ps, int i, String[] parameter, JdbcType jdbcType) throws SQLException {
? ? ? ? if (parameter == null)
? ? ? ? ? ? ps.setNull(i, Types.VARCHAR);
? ? ? ? else {
? ? ? ? ? ?JSONArray array = ?new JSONArray(Arrays.asList(parameter));
? ? ? ? ? ? ps.setString(i, array.toString());
? ? ? ? }
? ? }
? ? @Override
? ? public String[] getResult(ResultSet rs, String s) throws SQLException {
? ? ? ? String columnValue = rs.getString(s);
? ? ? ? return this.getStringArray(columnValue);
? ? }
? ? @Override
? ? public String[] getResult(ResultSet rs, int columnIndex) throws SQLException {
? ? ? ? String columnValue = rs.getString(columnIndex);
? ? ? ? return this.getStringArray(columnValue);
? ? }
? ? @Override
? ? public String[] getResult(CallableStatement cs, int i) throws SQLException {
? ? ? ? String columnValue = cs.getString(i);
? ? ? ? return this.getStringArray(columnValue);
? ? }
? ? private String[] getStringArray(String columnValue) {
? ? ? ? if (columnValue == null)
? ? ? ? ? ? return null;
? ? ? ? JSONArray jsonArr = JSONArray.parseArray(columnValue);
? ? ? ? return ?jsonArr.toArray(new String[jsonArr.size()]);
? ? }

由于在項(xiàng)目中使用了mybatisplus,所以使用如下:

?/**
? ? ?* 商品貨品的規(guī)格列表
? ? ?*/
? ? @TableField(value = "specifications",el = "specifications,typeHandler=com.seven.wechatshop.shopapi.typehandle.StringArrayTypeHandler")
? ? private String[] specifications;

但是上面的代碼,并沒有生效。后來閱讀文檔,發(fā)現(xiàn)是缺少了一個(gè)配置。如下

//注意使用了plus的是添加下面這個(gè)
mybatis-plus.type-handlers-package = com.seven.wechatshop.shopapi.typehandle

如果只是mybatis,那么添加的配置為

mybatis.type-handlers-package=com.seven.wechatshop.shopapi.typehandle

由于也是第一次使用mybatis-plus,有很多不熟悉的地方,但是漸漸熟悉以后,確實(shí)方便了很多,加快了開發(fā)的節(jié)奏和步伐。下面附上,一些條件參數(shù)說明

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java控制臺實(shí)現(xiàn)可視化日歷小程序

    java控制臺實(shí)現(xiàn)可視化日歷小程序

    這篇文章主要為大家詳細(xì)介紹了java控制臺實(shí)現(xiàn)可視化日歷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • PowerJob?AbstractSqlProcessor方法工作流程源碼解讀

    PowerJob?AbstractSqlProcessor方法工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob?AbstractSqlProcessor方法工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 使用Java橋接模式打破繼承束縛優(yōu)雅實(shí)現(xiàn)多維度變化

    使用Java橋接模式打破繼承束縛優(yōu)雅實(shí)現(xiàn)多維度變化

    這篇文章主要為大家介紹了使用Java橋接模式打破繼承束縛,優(yōu)雅實(shí)現(xiàn)多維度變化,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • javaweb servlet中使用請求轉(zhuǎn)發(fā)亂碼的實(shí)現(xiàn)

    javaweb servlet中使用請求轉(zhuǎn)發(fā)亂碼的實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄猨avaweb servlet中使用請求轉(zhuǎn)發(fā)亂碼的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • 利用Java實(shí)現(xiàn)文件鎖定功能

    利用Java實(shí)現(xiàn)文件鎖定功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)文件鎖定功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • java Spring Boot 配置redis pom文件操作

    java Spring Boot 配置redis pom文件操作

    這篇文章主要介紹了java Spring Boot 配置redis pom文件操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 利用java實(shí)現(xiàn)一個(gè)客戶信息管理系統(tǒng)

    利用java實(shí)現(xiàn)一個(gè)客戶信息管理系統(tǒng)

    這篇文章主要給大家介紹了關(guān)于利用java實(shí)現(xiàn)一個(gè)客戶信息管理系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 每日六道java新手入門面試題,通往自由的道路第二天

    每日六道java新手入門面試題,通往自由的道路第二天

    這篇文章主要為大家分享了最有價(jià)值的6道java面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對hashCode方法的設(shè)計(jì)、垃圾收集的堆和代進(jìn)行剖析,感興趣的小伙伴們可以參考一下
    2021-06-06
  • RabbitMQ消息的延遲隊(duì)列詳解

    RabbitMQ消息的延遲隊(duì)列詳解

    這篇文章主要介紹了RabbitMQ消息的延遲隊(duì)列,延遲隊(duì)列也就是死信交換機(jī),有些隊(duì)列的消息成為死信后,消息中間件可以將其從當(dāng)前隊(duì)列發(fā)送到另一個(gè)隊(duì)列中,這個(gè)隊(duì)列就是死信隊(duì)列,感興趣的同學(xué)可以參考下文
    2024-02-02
  • JAVA匿名內(nèi)部類語法分析及實(shí)例詳解

    JAVA匿名內(nèi)部類語法分析及實(shí)例詳解

    這篇文章主要介紹了JAVA匿名內(nèi)部類語法分析及實(shí)例詳解,匿名內(nèi)部類可以使你的代碼更加簡潔,它與局部類很相似,不同的是它沒有類名,如果某個(gè)局部類你只需要用一次,那么你就可以使用匿名內(nèi)部類。對此感興趣的可以了解一下
    2020-07-07

最新評論