mybatis mapper文件 使用心得

本文分享了MyBatis的使用心得,包括resultMap中id和result的区别,id可用于缓存和内嵌结果映射;resultMap字段映射时避免字段名重复;介绍了typeHandler在配置文件、Mapper文件的使用及相关文件;还提及mapper文件的三种注释方式及注意事项。

mybatis 使用心得

1. resultMap 中 id 和 result 的区别

idresult都是映射单列值到一个属性或字段的简单数据类型。
唯一不同是。id是作为唯一标识的,当和其他对象实例对比的时候,这个id可以应用到缓存和内嵌的结果映射。

2. resultMap 中字段的映射

resultMap中最好不要有两个column属性值相等的字段,因为在MyBatis进行查询映射的时候,查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。所以如果字段名重复的话,只会映射其中一个。

3. typeHandler 的使用

I. 在 application.properties 文件中配置handler路径:

mybatis.type-handlers-package: cn.itpower.pms.common.mybatis.handler.*

II. Mapper 文件中的使用:

<resultMap id="AiParamInputDTOMap" type="cn.itpower.pms.modules.plan.DTO.AiParamInputDTO"> <result column="request_param_value" jdbcType="VARCHAR" property="paramValue" javaType="string" typeHandler="cn.itpower.pms.common.mybatis.handler.JsonTypeHandler"/> </resultMap>

III. typeHandler 文件
public class JsonTypeHandler<T extends Object> extends BaseTypeHandler<T> {
   private Class<T> clazz;

   public JsonTypeHandler(Class<T> clazz) {
       if (clazz == null) {
           throw new IllegalArgumentException("Type argument cannot be null");
       }
       this.clazz = clazz;
   }

   /**
    * 保存数据的时候的处理,将对象转为JSON字符串
    * @param ps
    * @param i
    * @param parameter
    * @param jdbcType
    * @throws SQLException
    */
   @Override
   public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
       ps.setString(i, this.toJson(parameter));
   }

   /**
    * 获取对象时候的处理,将字段里的JSON串转为java对象
    * @param rs
    * @param columnName
    * @return
    * @throws SQLException
    */
   @Override
   public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
       return this.toObject(rs.getString(columnName), clazz);
   }

   @Override
   public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
       return this.toObject(rs.getString(columnIndex), clazz);
   }

   @Override
   public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
       return this.toObject(cs.getString(columnIndex), clazz);
   }

   private String toJson(T object) {
       return  JSON.toJSONString(object);
   }

   private T toObject(String content, Class<?> clazz) {
       if (content != null && !content.isEmpty()) {
           return (T)JSON.parseObject(content, clazz);
       } else {
           return null;
       }
   }
}

4. mapper文件中的注释

1. XML/HTML的标准注释:<!-- 注释内容 -->
2. Java语言中的多行注释:/* 注释内容 */
3. SQL中的特殊的注释符号:-

注意:第三种方式在部分IDE中只能添加到sql语句from关键字后面,即在查询字段处加 -注释会抛异常,保险起见,最好使用第一种注释

内容概要:本文针对功率阶跃工况下光储虚拟同步发电机(VSG)并网系统存在的电能质量问题,提出一种自适应治理策略。通过Simulink搭建完整的光储VSG并网系统仿真模型,重点研究在功率突变条件下系统出现的频率波动、电压畸变及谐波增加等动态问题。所提策略结合VSG的惯量与阻尼特性,设计了参数自适应调节机制,实现对系统动态响应过程的有效调控,显著提升了并网电流波形质量与频率稳定性,增强了系统在强扰动工况下的鲁棒性与电能质量治理能力。; 适合人群:具备电力电子、自动控制理论及新能源并网技术基础的科研人员、电气工程及相关专业的硕士/博士研究生,以及从事微电网、储能系统、VSG控制研发的工程技术人员。; 使用场景及目标:①用于分析光储系统在功率阶跃等动态工况下的并网特性与电能质量演变规律;②为VSG关键控制参数(如惯量、阻尼)的自适应整定提供设计思路与仿真验证平台;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的前期控制策略验证。; 阅读建议:建议结合Simulink仿真模型深入理解控制策略的实现逻辑,重点关注VSG惯量阻尼协同调节的自适应机制设计,可通过设置不同功率阶跃幅度、光照强度变化及负载投切等多场景进行仿真测试,全面评估策略的动态性能与适用边界。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值