多参数查询与列表查询不同方式实现(一)

2015-07-24 09:22:36 · 作者: · 浏览: 0

本文要实现Mybatis多参数查询与列表查询不同方式实现,以一个实例来说明。

本文示例工程下载

一、查询所有数据,返回List

查询出列表,也就是返回list, 在我们这个例子中也就是 List , 这种方式返回数据,需要在Employeer.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的

  
  
      
     
     
     
     
  

  
   
    
     
      
       
      
     
    
   
  
id、result是最简单的映射,id为主键映射;result其他基本数据库表字段到实体类属性的映射。

?

查询列表的语句在 Employeer.xml 中

  
      
在EmployeerMapper 接口中增加方法:public List findEmployeerByName(String employeer_name);
	/**
	 * 注意要和Employeer.xml的方法名对应
	 */
	public List
   
     findEmployeerByName(String employeer_name);   
   

测试:

?

?

	/**
	 * 查询列表
	 */
	public static List
   
     getEmployeerList(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 List
   
     findEmployeerByNameandDep(String employeer_name,String employeer_department);
   
Employeer.xml中定义

?

  
  
      
     
     
     
     
  

  
        
 
  由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始 
  

?


测试代码:

?

	/**
	 * 多参数查询列表
	 */
	public static List
   
     getEmployeerList(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 List
   
     findEmployeerByNameandDep1(Map
    
      map);
    
   
Employeer.xml中添加:

?

  
   

其中map是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个。

?

测试使用:

?

	/**
	 * 多参数查询列表,使用map
	 */
	public static List
   
     getEmployeerList(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