iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >mybatiesplus实体类设置typeHandler不生效的解决
  • 263
分享到

mybatiesplus实体类设置typeHandler不生效的解决

2024-04-02 19:04:59 263人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录实体类设置typeHandler不生效问题解决mybaties中TypeHandler的使用 解决实体类设置typeHandler不生效问题 实体类: @Data @T

实体类设置typeHandler不生效问题

实体类:

@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;
 
    
    @TableField(value = "ip", insertStrategy = FieldStrategy.NOT_EMPTY)
    //@Column(name = "ip", isNull = false, comment = "服务器ip" )
    private String ip;
    
    @TableField(value = "port",  insertStrategy = FieldStrategy.NOT_NULL)
    //@Column(name = "port", isNull = false, comment = "服务器port" )
    private Integer port;
    
    @TableField(value = "authentication_name", typeHandler = AesTypeHandler.class, insertStrategy = FieldStrategy.NOT_EMPTY)
    //@Column(name = "authentication_name", isNull = false, comment = "服务器登录用户名" )
    private String authenticationName;
    
    @TableField(value = "authentication_pwd", typeHandler = AesTypeHandler.class, insertStrategy = FieldStrategy.NOT_EMPTY)
    //@Column(name = "authentication_pwd", isNull = false, comment = "服务器登录密码" )
    private String authenticationPwd;
 
}

结果插入时时有效的,但是i查询时会出现部分没有解密的问题。

解决

1.实体类注解TableName  补充  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的使用 

在实际项目中,有一个物品表,其中有一个规格的字段,存入了JSON数组字符串,但是后续在使用实体类的过程中,发现些不方便,到处要转 String 和 String[]很不方便。因此希望可以直接映射。

解决

发现网上有一个TypeHandler可以做到枚举和数据字段的相互对应,那么用来做数组和String的转化应该也是可以的。代码如下:

@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()]);
    }

由于在项目中使用了mybatisplus,所以使用如下:

 
    @TableField(value = "specifications",el = "specifications,typeHandler=com.seven.wechatshop.shopapi.typehandle.StringArrayTypeHandler")
    private String[] specifications;

但是上面的代码,并没有生效。后来阅读文档,发现是缺少了一个配置。如下

//注意使用了plus的是添加下面这个
mybatis-plus.type-handlers-package = com.seven.wechatshop.shopapi.typehandle

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

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

由于也是第一次使用mybatis-plus,有很多不熟悉的地方,但是渐渐熟悉以后,确实方便了很多,加快了开发的节奏和步伐。下面附上,一些条件参数说明

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: mybatiesplus实体类设置typeHandler不生效的解决

本文链接: https://www.lsjlt.com/news/165773.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatiesplus实体类设置typeHandler不生效的解决
    目录实体类设置typeHandler不生效问题解决mybaties中TypeHandler的使用 解决实体类设置typeHandler不生效问题 实体类: @Data @T...
    99+
    2024-04-02
  • swagger @ApiModel添加实体类不生效的解决
    目录@ApiModel添加实体类不生效 Models实体类无法显示解决办法@ApiModel添加实体类不生效  swagger, @ApiModel, Model...
    99+
    2024-04-02
  • springboot 设置CorsFilter跨域不生效的解决
    目录设置CorsFilter跨域不生效的解决问题描述解决方案跨域配置CorsFilter不生效原因order的规则设置CorsFilter跨域不生效的解决 问题描述 公司的前后端开发...
    99+
    2024-04-02
  • Vue设置keepAlive不生效怎么解决
    本篇内容主要讲解“Vue设置keepAlive不生效怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue设置keepAlive不生效怎么解决”吧!设置keepAlive不生效如演示,Vu...
    99+
    2023-06-30
  • springboot 设置server.port不生效的原因及解决
    springboot 设置server.port不生效 近年来,springboot以其快速构建方便便捷,开箱即用,约定优于配置(Convention Over Configurat...
    99+
    2024-04-02
  • Vue设置keepAlive不生效问题及解决
    目录设置keepAlive不生效1.在App.vue中的设置2.在router中的index.js设置keep-alive缓存组件不生效的坑坑出现背景坑的原因代码如下设置keepAl...
    99+
    2024-04-02
  • spring boot security设置忽略地址不生效的解决
    spring boot security设置忽略地址不生效 最近在试下微服务改造,出现这样一个问题所有请求都经过spring cloud gateway进行认证授权后再访问后端数据方...
    99+
    2024-04-02
  • 解决VSCode设置中文界面不生效的问题
    标题:解决VSCode设置中文界面不生效的问题,需要具体代码示例 在日常使用VSCode进行开发时,许多开发者会遇到一个问题,即设置中文界面却无法生效的情况。这个问题可能导致用户在使用...
    99+
    2024-04-02
  • CSS媒体查询不生效怎么解决
    如果CSS媒体查询不生效,可以尝试以下解决方法:1. 检查媒体查询的语法和语义是否正确。确保媒体查询的条件和CSS规则之间没有语法错...
    99+
    2023-10-12
    CSS
  • vs设置启动项后不生效怎么解决
    如果您在使用VS(Visual Studio)设置启动项后发现它不生效,可能有以下几种解决方法:1. 确保选择了正确的启动项:在VS...
    99+
    2023-08-09
    vs
  • 怎么解决php.ini设置时区不生效问题
    这篇文章主要介绍“怎么解决php.ini设置时区不生效问题”,在日常操作中,相信很多人在怎么解决php.ini设置时区不生效问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决php.ini设置时区不生...
    99+
    2023-06-25
  • 设置session过期时间不生效怎么解决
    如果设置session过期时间不生效,可能是由于以下原因:1. 服务器配置问题:检查服务器的session配置是否正确。确保sess...
    99+
    2023-08-17
    session
  • 解决VSCode中文设置不生效的方法有哪些?
    解决VSCode中文设置不生效的方法有哪些? Visual Studio Code(简称VSCode)是一款广受欢迎的轻量级的代码编辑器,由于其高度的自定义性和丰富的插件生态,被越来越...
    99+
    2024-04-02
  • fastjson转换对象实体@JsonProperty不生效问题及解决
    目录fastjson转换对象实体@JsonProperty不生效项目场景问题描述原因分析解决方案@JsonProperty 失效问题的排查fastjson转换对象实体@JsonPro...
    99+
    2024-04-02
  • quartz配置不生效如何解决
    要解决Quartz配置不生效的问题,您可以按照以下步骤操作:1. 确保在您的项目中正确地配置了Quartz。首先,检查您的pom.x...
    99+
    2023-09-13
    quartz
  • 怎么解决springboot设置CorsFilter跨域不生效问题
    这篇文章主要讲解了“怎么解决springboot设置CorsFilter跨域不生效问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决springboot设置CorsFilter跨域不...
    99+
    2023-06-25
  • 解决Springboot配置excludePathPatterns不生效的问题
    目录Springboot配置excludePathPatterns不生效先说解决方案使用excludePathPatterns过滤Swagger路径失败Springboot配置exc...
    99+
    2022-11-13
    Springboot配置 excludePathPatterns不生效 Springboot excludePathPatterns
  • spring boot security设置忽略地址不生效的解决方法
    这篇文章主要讲解了“spring boot security设置忽略地址不生效的解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“spring boot security设置忽略地址不生...
    99+
    2023-06-20
  • 如何解决VSCode设置中文重启不生效的问题?
    标题:如何解决VSCode设置中文重启不生效的问题? 在使用VSCode编程时,有时候我们会遇到设置中文后重启不生效的问题。这个问题让很多开发者感到困扰,因为在使用中文的情况下,很多人...
    99+
    2024-04-02
  • plsql配置oci不生效怎么解决
    如果配置PL/SQL的OCI没有生效,可能是由于以下几种原因导致的: 配置错误:检查一下配置文件中的相关配置是否正确,比如路径是...
    99+
    2024-04-09
    plsql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作