本文要实现Mybatis多参数查询与列表查询不同方式实现,以一个实例来说明。
本文示例工程下载
一、查询所有数据,返回List
查询出列表,也就是返回list, 在我们这个例子中也就是 List
id、result是最简单的映射,id为主键映射;result其他基本数据库表字段到实体类属性的映射。
?
查询列表的语句在 Employeer.xml 中
在EmployeerMapper 接口中增加方法:public List
/** * 注意要和Employeer.xml的方法名对应 */ public ListfindEmployeerByName(String employeer_name);
测试:
?
?
/** * 查询列表 */ public static ListgetEmployeerList(String employeer_name){ SqlSession session = null; List employeers=null; try { session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class); employeers = employeerMapper.findEmployeerByName(employeer_name); session.commit() ; } finally { session.close(); } return employeers; } public static void main(String[] args) { List employeers=getEmployeerList("张三"); for(Employeer employeer:employeers){ System.out.println(employeer); } }
?
结果:

其中的数据的之前插入的,现在要查找张三的列表全部都列出来了。
二、多参数查询
(1)方法一
EmployeerMapper中定义
?
/** * 多参数查询,注意要和Employeer.xml的方法名对应 */ public ListEmployeer.xml中定义findEmployeerByNameandDep(String employeer_name,String employeer_department);
?
由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
?
测试代码:
?
/** * 多参数查询列表 */ public static ListgetEmployeerList(String employeer_name,String employeer_department){ SqlSession session = null; List employeers=null; try { session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class); employeers = employeerMapper.findEmployeerByNameandDep(employeer_name, employeer_department); session.commit() ; } finally { session.close(); } return employeers; }
public static void main(String[] args) {
System.out.println("=========================使用多单参数查询===========================");
List
employeers1=getEmployeerList("张三","产品二部");
for(Employeer employeer1:employeers1){
System.out.println(employeer1);
}
结果:
?

方法二:
将 resultMap="resultMap" 改成 resultType="Employeer"
方法三:Map封装多参数
EmployeerMapper.java中添加
/** * 多参数查询,注意要和Employeer.xml的方法名对应 */ public ListEmployeer.xml中添加:findEmployeerByNameandDep1(Map map);
?
其中map是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个。
?
测试使用:
?
/** * 多参数查询列表,使用map */ public static ListgetEmployeerList(Map map){ SqlSession session = null; List employeers=null; try { session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class); employeers = employeerMapper.findEmployeerByNameandDep1(map); session.commit() ; } finally { session.close(); } return employeers; }
System.ou