Python 官方文档:入门教程 => 点击学习
目录1. 单个简单参数传递2. 匿名参数顺序传递3. 使用@Param注解传递4. 使用Map传递参数5. 使用JavaBean(POJO)传递6. 使用List、Array、Set
使用mybatis作为持久层框架时,对于数据库的增删改查等操作都需要参数的传递,这里学习记录一下MyBatis中可用的参数传递方式。
使用 MyBatis 传递单个参数时比较简单,形式如#{a}
,#{b}
,#{param1}
等都可以在 MyBatis 中获取到唯一参数,但是参数名尽量和入参名一致,这样更符合开发规范。
Mapper 文件定义
UserInfo selectById(String userId);
xml 文件定义
<select id="selectByUserId" resultType="com.shone.entity.UserInfo">
select user_id, user_name from user_info where user_id=#{userId}
</select>
匿名参数传递时使用的是 MyBatis 中索引传递的方式,对于传递的多个参数,在sql
语句标签中使用#{param1}
、#{param2}
等索引依次代表传入的参数值。
Mapper 文件
UserInfo selectByNameAndAge(String userName, Integer age);
xml 文件
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo">
select user_id, user_name from user_info where user_name=#{param1} and user_gender=#{param2}
</select>
@Param注解用于指定key,指定了key之后,在sql
标签中可以使用key来索引对应的参数值。
Mapper 文件
UserInfo selectByNameAndAge(@Param("userName") String userName, @Param("age") Integer age);
xml 文件
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo">
select user_id, user_name from user_info where user_name=#{userName} and user_gender=#{age}
</select>
@Param注解传参使用时清晰简洁明了,符合开发规范,在参数较少时建议使用该方式。
MyBatis框架底层就是将入参转换成Map类型进行传递的,因此我们也可以使用Map进行参数的传递,传入的参数在sql
标签中可以根据Map中的key值直接获取。
使用时,需要将传入的参数放入到map中
map.put("userName","tom");
map.put("gender",1);
Mapper 文件
UserInfo selectByNameAndAge(Map<String, Object> map);
xml 文件
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo" paramterType="map">
select user_id, user_name from user_info where user_name=#{userName} and user_gender=#{age}
</select>
使用Map传递参数符合MyBatis底层的设计,性能也没有问题,但是在开发中由于将所有值封装成为map,无法直观看到map中可能含有的参数,在后期维护上不太友好。
除了Map方式,还可以使用JavaBean的方式来传递多个参数,此时在sql
标签中直接使用bean对象的属性来索引参数值,注意bean对象中 需要有相应参数的get
方法,否则无法正常获取。
使用javabean作为参数,需要先定义JavaBean
@Data
public class UserInfo {
private String userName;
private Integer age;
}
Mapper 文件
UserInfo selectByEntity(UserInfo userInfo);
xml 文件
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo" paramterType="com.shone.entity.UserInfo">
select user_id, user_name from user_info where user_name=#{userName} and user_gender=#{age}
</select>
JavaBean的参数传递方式更符合项目开发的规范,实际使用时简洁明了,在参数较多时建议使用这种方式,创建JavaBean来作为参数传递对象。
List、Array、Set等方式的传参通常用于sql
标签中的in操作,即用于MyBatis中的标签。
使用list或array时,一般是做in操作,只有一个参数。
Mapper 文件
UserInfo selectByIdList(List<String> userIdList);
xml 文件
<select id="selectByIdList" resultMap="userResultMap">
select * from user_info where status=1
and user_id in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
到此这篇关于SpringBoot使用MyBatis时的几种传参规范示例的文章就介绍到这了,更多相关springBoot MyBatis 传参内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: SpringBoot使用MyBatis时的几种传参规范示例
本文链接: https://lsjlt.com/news/139786.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0