使用 Mybatis 真心不要偷懒!,达内Java百度云

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Mybatis 真心不要偷懒!,达内Java百度云相关的知识,希望对你有一定的参考价值。

自动生成代码的若干宗罪:

  • SQL怎么优化?

  • 命名不规范如何修改?

  • 冗余代码怎么办?常常是为了一个代码,生成一堆代码。

  • 参数可理解性?

传参方式

1. 使用 _parameter 关键字

接口:


List<Address> queryAddressBySimplte(String address,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=#{0}

     </if>

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

      and coin_type=#{1}

    </if>

  </select> 

其中_parameter 参数表示参数对象,其内部数据结构为:MapperParamMap 。按照index进行参数值的获取。

注意事项:

  • 当方法是单个参数时,可以直接使用 #{_parameter} 进行获取。

  • 当方法有多个参数时,则不能直接使用 #{_parameter} 方式,必须通过Index的形式进行获取,#{0} 表示第一个参数,#{1} 表示第二个参数。

  • 当方法为多个参数时使用 #{_parameter} 时。日志显示如下所示:

DEBUG main - ==> Preparing: 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 where

address=? and coin_type=? 2019-05-07 13:24:31 DEBUG main - ==>

Parameters: {0=0xbfa8f58ebea6e0643a5370c555a5bacfe320fd72, 1=ETH,

param1=0xbfa8f58ebea6e0643a5370c555a5bacfe320fd72,

param2=ETH}(MapperParamMap)

优点:

暂时没想出来啥优点。(知道的可以在评论区留言补充)。

缺点:

多个参数时,只能通过角标的形式引入,可读性,以及可理解性比较差。

传参时,不同参数数量其规则不同,容易出错。

代码生成工具使用的比较多,我相信很少有人主动用这种方式。

  1. 使用@Param 注解

接口:


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">


# **Java高频面试专题合集解析:**

![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/622f5c57cda58627218db5aab7059d42.png)

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,在这也是免费分享给那些有需要的朋友,其中囊括了**Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!**

**这些资料都以整理成了PDF文档,如果有需要可以[狂戳这里免费下载](https://gitee.com/vip204888/java-p7)即可!**


![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/00b17269e8c4a31507b4ef7b54e2f2f7.png)

**更多Java架构进阶资料展示**

![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/17e3b6d9ebdf53818f7a22417ea27391.png)

![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/b475b62fd215abeb349563996312e253.png)

cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!**

**这些资料都以整理成了PDF文档,如果有需要可以[狂戳这里免费下载](https://gitee.com/vip204888/java-p7)即可!**


[外链图片转存中...(img-WwgNiCqU-1628434986369)]

**更多Java架构进阶资料展示**

[外链图片转存中...(img-otX7ktWf-1628434986371)]

[外链图片转存中...(img-XqkaDLmT-1628434986374)]

![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/19acd31c6a08f52c746af8e16641d2de.png)

以上是关于使用 Mybatis 真心不要偷懒!,达内Java百度云的主要内容,如果未能解决你的问题,请参考以下文章

还在用分页?太Low !试试 MyBatis 流式查询,真心强大!

还在用分页?太Low !试试 MyBatis 流式查询,真心强大!

你还在用分页?太Low !试试 MyBatis 流式查询,真心强大!

武汉达内Java培训如何?

达内java培优训练营 2106班

java培训课程表?