程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 多參數查詢與列表查詢不同方式實現

多參數查詢與列表查詢不同方式實現

編輯:DB2教程

多參數查詢與列表查詢不同方式實現


本文要實現Mybatis多參數查詢與列表查詢不同方式實現,以一個實例來說明。

本文示例工程下載

一、查詢所有數據,返回List

查詢出列表,也就是返回list, 在我們這個例子中也就是 List , 這種方式返回數據,需要在Employeer.xml 裡面配置返回的類型 resultMap, 注意不是 resultType, 而這個resultMap 所對應的應該是我們自己配置的

<!-- 定義數據庫字段與實體對象的映射關系 -->  
<resultMap type="Employeer" id="resultMap">  
   <id property="employeer_id" column="employeer_id"/>   
   <result property="employeer_name" column="employeer_name"/>  
   <result property="employeer_age" column="employeer_age"/>  
   <result property="employeer_department" column="employeer_department"/>  
   <result property="employeer_worktype" column="employeer_worktype"/>  
</resultMap>  
id、result是最簡單的映射,id為主鍵映射;result其他基本數據庫表字段到實體類屬性的映射。

 

查詢列表的語句在 Employeer.xml 中

<!-- 返回list 的select 語句,注意 resultMap 的值是指向前面定義好的 -->  
    <select id="findEmployeerByName" parameterType="string" resultMap="resultMap">  
        select * from `t_employeer` where employeer_name like #{employeer_name}  
    </select>  
在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中定義

 

<!-- 定義數據庫字段與實體對象的映射關系 -->  
<resultMap type="Employeer" id="resultMap">  
   <id property="employeer_id" column="employeer_id"/>   
   <result property="employeer_name" column="employeer_name"/>  
   <result property="employeer_age" column="employeer_age"/>  
   <result property="employeer_department" column="employeer_department"/>  
   <result property="employeer_worktype" column="employeer_worktype"/>  
</resultMap>  

<!--多參數 查找 返回list 的select 語句,注意 resultMap 的值是指向前面定義好的 -->  
     <select id="findEmployeerByNameandDep"  resultMap="resultMap">  
     select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}  
     </select>   

由於是多參數那麼就不能使用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"

<!--多參數 查找 返回list 的select 語句,注意 resultMap 的值是指向前面定義好的 -->  
     <select id="findEmployeerByNameandDep"  resultType="Employeer">  
     select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}  
     </select>   

方法三:Map封裝多參數
EmployeerMapper.java中添加
	/**
	 * 多參數查詢,注意要和Employeer.xml的方法名對應
	 */
	public List findEmployeerByNameandDep1(Map map);
Employeer.xml中添加:

 

<!--多參數 查找 返回list 的select 語句,注意 resultMap 的值是指向前面定義好的,注意key1和key2為傳入的map的鍵值 -->  
<select id="findEmployeerByNameandDep1" parameterType="map" resultType="Employeer">  
select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}  
</select>   

其中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.out.println("=========================使用多單參數map方式查詢===========================");
		 Map map = new HashMap(); 
		 map.put("key1", "明明"); 
		 map.put("key2", "財會部");
		 List employeers2=getEmployeerList(map);
		 for(Employeer employeer2:employeers2){
             System.out.println(employeer2);
         }

一定要注意key:

 

結果:

\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved