目 录CONTENT

文章目录

Mybatis传参的方式

小张的探险日记
2021-12-15 / 0 评论 / 0 点赞 / 886 阅读 / 1,539 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-12-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

现在公司在使用Mybatis 做开发,遇到Mybatis传参的问题,刚好总结下,因为之前也没总结归纳过,刚好有时间做个总结。

MyBatis的优缺点(推荐使用 Mybatis plus)

优点

  1. 简单易学
  2. 本身就很小且简单。
  3. 没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

灵活

  1. mybatis不会对应用程序或者数据库的现有设计强加任何影响。
  2. sql写在xml里,便于统一管理和优化。
  3. 通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

解除sql与程序代码的耦合

  1. 通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。
  2. sql和代码的分离,提高了可维护性。
  3. 提供映射标签,支持对象与数据库的orm字段关系映射
  4. 提供对象关系映射标签,支持对象关系组建维护
  5. 提供xml标签,支持编写动态sql。

缺点

  1. 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
  2. SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
  3. 框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

传参方式

方法一

#{} 里面的数字 代表传入的 参数的 顺序,这样的传参方式,其实不太直观, 看代码的话,不方便。 不推荐

public User selectUser(String name,int deptId);
    
<select id="selectUser" resultMap="UserResultMap">
select
   *
from
  user
where
user_name=#{0} and dept_id = #{1}
</select>

方法二

@Param 注解,#{} 里面 直接就是 @Param() 里面的值
 ==推荐此方法,直观,一目了然==
public User selectUser(@Param("name") String name,@Param("deptId") int deptId);
<select id="selectUser" resultMap="UserResultMap">
select
*
from
user
where
user_name=#{name} and dept_id = #{deptId}
</select

方法三

Bean 传参

==推荐此方法,直观,使用对象传参,看情况使用,需要建实体,扩展不便==

public User selectUser(User user);
<select id="selectUser" resultMap="UserResultMap">
select
*
from
user
where
user_name=#{user.name} and dept_id = #{user.deptId}
</select>

方法四

==适用于多个参数 传参的情况,传参方式灵活,#{} 里面就是 map的 key==

public User selectUser(Map<String,Object> params);
<select id="selectUser" resultMap="UserResultMap">
select
*
from
user
where
user_name=#{name} and dept_id = #{deptId}
</select>

0

评论区