mybatis 映射器select语句传递多个参数
时间:2019-02-19
本文章向大家介绍mybatis 映射器select语句传递多个参数,主要包括mybatis 映射器select语句传递多个参数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
- 在映射器的xml文件中select语句有一个配置项叫做parameterType,它用来表示这条语句接收的参数类型。当传递的参数只有一个时,非常简单,直接在等号后面写上参数的类型即可。但是实际查询语句可能需要多个条件,也就是多个参数。下面介绍传入多个参数的几种方法。
- 有四种方法可以实现,分别是使用map传参数、使用注解传参数、使用Java Bean传参数和使用混合方式传参数。第一种map的方式不实用,所以只介绍剩余三种。
- 我们介绍的案例是通过角色表的两列信息来进行查询。角色表对应的pojo定义如下:
import java.io.Serializable;
import org.apache.ibatis.type.Alias;
@Alias("role")
public class Role implements Serializable {
private static final long serialVersionUID = 598736524547906734L;
private Long id;
private String roleName;
private String note;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
使用注解方式传参数
- 接口方法定义如下:
public List<Role> findRolesByAnnotation(@Param("roleName") String rolename, @Param("note") String note);
- 对应的映射文件配置如下,此时不需要写parameterType。
<select id="findRolesByAnnotation" resultType="role">
select id,
role_name as roleName, note from t_role
where role_name like
concat('%', #{roleName}, '%')
and note like concat('%', #{note}, '%')
</select>
通过java bean传递参数
- 首先需要创建需要传递参数的pojo类:
public class RoleParams {
private String roleName;
private String note;
/**setter and getter**/
}
- 接口方法定义如下:
public List<Role> findRolesByBean(RoleParams roleParam);
- 对应的配置文件如下,参数处直接写RoleParams类的属性名字。
<select id="findRolesByBean" parameterType="RoleParams"
resultType="role">
select id, role_name as roleName, note from t_role
where
role_name like
concat('%', #{roleName}, '%')
and note like concat('%',
#{note}, '%')
</select>
- 查询时需要先定义一个RoleParams对象,将其传入接口方法。
sqlSession = SqlSessionFactoryUtils.openSqlSession();
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
RoleParams roleParam = new RoleParams();
roleParam.setNote("1");
roleParam.setRoleName("1");
List<Role> roles = roleMapper.findRolesByBean(roleParam);
混合方式传入参数
有时我们需要混合使用几种方式,例如查询一个角色,可以使用角色名字和备注进行查询,与此同时还要支持分页,而分页参数的pojo如下:
public class PageParams{
private int start;
private int limit;
/**setter and getter**/
}
这时候的接口方法如下,使用注释和java bean混合的方式。
public List<Role> findByMix(@Param("params") RoleParams roleParams, @Param("page") PageParams PageParam);
对应的配置文件如下,注意这里对参数的引用方式。
<select id="findByMix" resultType="role">
select id, role_name as
roleName, note from t_role
where role_name like
concat('%',
#{params.roleName}, '%')
and note like concat('%', #{params.note}, '%')
limit #{page.start}, #{page.limit}
</select>
- 视差滚动技术的简介及运用
- 【面试虐菜】—— JAVA面试题(3)
- Carousel 旋转画廊特效的疑难杂症
- 区块链为IBM与Visa等老牌公司注入新的生机
- 【java.lang.UnsupportedClassVersionError】版本不一致出错
- Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
- JSP与JavaBeans
- Log4j官方文档翻译(四、如何在java中输出日志消息)
- 展望未来:使用 PostCSS 和 cssnext 书写 CSS
- Java多线程之Runable与Thread
- 关于 devbridge-autocomplete 插件多选操作的实现方法
- node-sass 安装失败的解决措施
- JavaMelody监控SQL
- 关于jboss的线程问题+java.lang.outofmemoryError
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释