写点什么

使用 Mybatis 真心不要偷懒!,kafka 大数据架构

用户头像
极客good
关注
发布于: 刚刚

List<Address> queryAddressBySimplte(@Param("address")String address,@Param("coinType") String coinType);


XML 文件


<sql id="querySQL">


select oid, party_id, coin_type, address,address_alias,address_type, wallet_id,


user_id, status, register_time, created_time, update_time from t_molecule_address


</sql>


<select id="queryAddressBySimplte" resultType="Address">


<include refid="querySQL"/> where


<if test="_parameter!=null and _parameter!=''">


address=#{address}


</if>


<if test="_parameter!=null and _parameter!=''">


and coin_type=#{coinType}


</if>


</select>


注意事项:


在 XML 文件中的参数名与 @Param()中的参数名一致,与方法参数名无关。


例如:


List<Address> queryAddressBySimplte(@Param("addressAlias")String address,@Param("coinTypeAlias") String coinType);


这时我们在 XML 文件中,对应的参数应该为:


<select id="queryAddressBySimplte" resultType="Address">


<include refid="querySQL"/> where


<if test="_parameter!=null and _parameter!=''">


address=#{addressAlias}


</if>


<if test="_parameter!=null and _parameter!=''">


and coin_type=#{coinTypeAlias}


</if>


</select>


使用注解时,我们还可以 params 方式。


例如:


<select id="queryAddressBySimplte" resultType="Address">


<include refid="querySQL"/> where


<if test="param1!=null and param1!=''">


address=#{param1}


</if>


<if test="param2!=null and param2!=''">


and coin_type=#{param2}


</if>


</select>


其中 param1 表示第一个参数,param2 表示第二个参数。当然了,不推荐大家这么用,因为对可读性以及可理解性都不友好。


优点:


代码可读性好,参数自可读。


可重命名参数名。


缺点:


需要引入 @Param 注解 (当然,我不认为这是缺点)。


可扩展性较弱。(超过 3 个参数的方法,就不建议使用该方法了)。


  1. 使用 Java 对象


Domain 对象(省略 Get / Set 方法):


public class Address {


/**


  • 币种类型


*/


private String coinType;


/**


  • 地址


*/


private String address;


...



【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


口:


List<Address> queryAddressBySimplte(Address address);


XML 文件:


<select id="queryAddressBySimplte" resultType="Address" parameterType="Address">


<include refid="querySQL"/> where


<if test="address!=null and address!=''">


address=#{address}


</if>


<if test="coinType!=null and coinType!=''">


and coin_type=#{coinType}


</if>


</select>


其中参数为 Address 对象中的属性即可。如果参数为非对象属性中的参数,即会显示以下异常:


org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'coinType11' in 'class io.invault.molecule.dal.domain.address.Address'


优点:


可扩展性好。


参数名与对象列明一致,理解性好。

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
使用 Mybatis 真心不要偷懒!,kafka大数据架构