ibatis多条件查询及相关练习

Emp.java

View Code
  1 package org.xiong.ibatis.demo.model;
  2 
  3 import java.util.Date;
  4 
  5 public class Emp
  6 {
  7     private int empno;
  8     private String ename;;
  9     private String job;
 10     private int mgr;
 11     private Date hiredate;
 12     private float sal;
 13     private float comm;
 14     private int deptno;
 15     private Emp empmgr;
 16     private Dept dept;
 17     private String photo;
 18 
 19     public Emp getEmpmgr()
 20     {
 21         return empmgr;
 22     }
 23 
 24     public void setEmpmgr(Emp empmgr)
 25     {
 26         this.empmgr = empmgr;
 27     }
 28 
 29     public Dept getDept()
 30     {
 31         return dept;
 32     }
 33 
 34     public void setDept(Dept dept)
 35     {
 36         this.dept = dept;
 37     }
 38 
 39     private String note;
 40 
 41     public int getEmpno()
 42     {
 43         return empno;
 44     }
 45 
 46     public void setEmpno(int empno)
 47     {
 48         this.empno = empno;
 49     }
 50 
 51     public String getEname()
 52     {
 53         return ename;
 54     }
 55 
 56     public void setEname(String ename)
 57     {
 58         this.ename = ename;
 59     }
 60 
 61     public String getJob()
 62     {
 63         return job;
 64     }
 65 
 66     public void setJob(String job)
 67     {
 68         this.job = job;
 69     }
 70 
 71     public int getMgr()
 72     {
 73         return mgr;
 74     }
 75 
 76     public void setMgr(int mgr)
 77     {
 78         this.mgr = mgr;
 79     }
 80 
 81     public Date getHiredate()
 82     {
 83         return hiredate;
 84     }
 85 
 86     public void setHiredate(Date hiredate)
 87     {
 88         this.hiredate = hiredate;
 89     }
 90 
 91     public float getSal()
 92     {
 93         return sal;
 94     }
 95 
 96     public void setSal(float sal)
 97     {
 98         this.sal = sal;
 99     }
100 
101     public float getComm()
102     {
103         return comm;
104     }
105 
106     public void setComm(float comm)
107     {
108         this.comm = comm;
109     }
110 
111     public int getDeptno()
112     {
113         return deptno;
114     }
115 
116     public void setDeptno(int deptno)
117     {
118         this.deptno = deptno;
119     }
120 
121     public String getPhoto()
122     {
123         return photo;
124     }
125 
126     public void setPhoto(String photo)
127     {
128         this.photo = photo;
129     }
130 
131     public String getNote()
132     {
133         return note;
134     }
135 
136     public void setNote(String note)
137     {
138         this.note = note;
139     }
140 
141     @Override
142     public String toString()
143     {
144         String empStr = "empno:" + this.empno + "  ename:" + this.ename
145                 + "  job:" + this.job + "  mgr:" + this.mgr + "  hiredate:"
146                 + this.hiredate + "  sal:" + this.sal + "  comm:" + this.comm
147                 + "  deptno:" + this.deptno + "  photo:" + this.photo
148                 + "  note:" + this.note;
149         return empStr;
150     }
151 }

Emp.xml

View Code
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!DOCTYPE sqlMap      
  3     PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
  4     "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  5 <sqlMap>
  6     <typeAlias alias="Emp" type="org.xiong.ibatis.demo.model.Emp" />
  7     
  8     <select id="selectAllEmp" resultClass="Emp">
  9         select empno,ename,job,NVL(mgr,0),hiredate,NVL(sal,0),NVL(comm,0),NVL(deptno,0),photo,note from Emp
 10     </select>
 11     <select id="selectOneEmp" resultClass="Emp" parameterClass="Emp" >
 12         select empno,ename,job,NVL(mgr,0),hiredate,NVL(sal,0),NVL(comm,0),NVL(deptno,0),photo,note 
 13         from Emp
 14         where empno=#empno#
 15     </select>
 16     
 17     <!-- 动态生成sql,单一条件查询 -->
 18     <select id="dynamicQuery" resultClass="Emp" parameterClass="Integer">
 19         select * from emp 
 20         <dynamic prepend=" where ">
 21             empno=#param#        
 22         </dynamic>
 23     </select>
 24     
 25     <!-- 动态生成sql,多个条件查询 -->
 26     <parameterMap class="java.util.HashMap" id="manyParameters">
 27         <parameter property="empno1" javaType="Integer" jdbcType="NUMBER" />
 28         <parameter property="empno2" javaType="Integer" jdbcType="NUMBER" /> 
 29         <parameter property="sal" javaType="Integer" jdbcType="NUMBER" />
 30         <parameter property="comm" javaType="Integer" jdbcType="NUMBER" />
 31         <parameter property="hiredate" javaType="String" jdbcType="DATE" />            
 32     </parameterMap>
 33     <select id="dynamicQueryWithMultipleconditions1" resultClass="Emp" parameterMap="manyParameters" >
 34         select * from emp 
 35         <dynamic prepend=" where ">            
 36                 empno in (#empno1#,#empno2#)            
 37         </dynamic>
 38     </select>
 39     
 40     <select id="dynamicQueryWithMultipleconditions" resultClass="Emp" parameterMap="manyParameters" >
 41         select empno,ename,job,mgr,hiredate,sal,comm,deptno,photo,note 
 42         from emp 
 43         <dynamic prepend=" where ">            
 44                 <![CDATA[ sal<#sal# and comm>#comm# and hiredate>to_date(#hiredate#,'yyyy-mm-dd') and mgr between #empno1# and #empno2# ]]> 
 45         </dynamic>
 46     </select>
 47     
 48     <!-- FindById -->
 49     <resultMap class="Emp" id="ResultObject">
 50         <result property="empno" column="EMPNO" javaType="Integer" jdbcType="NUMBER"/>
 51         <result property="ename" column="ENAME" javaType="String" jdbcType="VARCHAR2"/>
 52         <result property="job" column="JOB" javaType="String" jdbcType="VARCHAR2"/>
 53         <result property="mgr" column="MGR" javaType="Integer" jdbcType="NUMBER"/>
 54         <result property="empmgr.empno" column="MGREMPNO" javaType="Integer" jdbcType="NUMBER"/>
 55         <result property="empmgr.ename" column="MGRENAME" javaType="String" jdbcType="VARCHAR2"/>
 56         <result property="hiredate" column="HIREDATE" javaType="java.util.Date" jdbcType="DATE"/>
 57         <result property="sal" column="SAL" javaType="Float" jdbcType="NUMBER"/>
 58         <result property="comm" column="COMM" javaType="Float" jdbcType="NUMBER"/>
 59         <result property="dept.deptno" column="DEPTNO" javaType="Integer" jdbcType="NUMBER"/>
 60         <result property="dept.dname" column="DNAME" javaType="String" jdbcType="VARCHAR2"/>
 61         <result property="photo" column="PHOTO" javaType="String" jdbcType="VARCHAR2"/>
 62         <result property="note" column="NOTE" javaType="String" jdbcType="VARCHAR2"/>
 63     </resultMap>
 64     <select id="empFindById" resultClass="Emp" parameterClass="Integer" resultMap="ResultObject">
 65         select e.empno,e.ename,e.job,e.mgr,m.empno MGREMPNO,m.ename MGRENAME,e.hiredate,e.sal,e.comm,d.deptno,d.dname,e.photo,e.note 
 66         from emp e,emp m,dept d 
 67         <dynamic prepend=" where ">
 68             e.empno=#id# and e.mgr=m.empno(+) and e.deptno=d.deptno(+)
 69         </dynamic>         
 70     </select>
 71     
 72     <!-- FindByKeyWord -->
 73     <select id="findByKeyword" parameterClass="String" resultClass="Emp">
 74         select empno,ename,job,NVL(mgr,0),hiredate,NVL(sal,0),NVL(comm,0),NVL(deptno,0),photo,note
 75         from emp e 
 76         where empno like '%$keyword$%' or ename like '%$keyword$%' or job like '%$keyword$%' or mgr like '%$keyword$%' or to_char(hiredate,'yyyy-mm-dd') like '%$keyword$%' or sal like '%$keyword$%' or comm like '%$keyword$%' or deptno like '%$keyword$%'
 77     </select>
 78     
 79     <!-- EmpPaging -->
 80     <parameterMap class="java.util.Map" id="pageSizeRownum">
 81         <parameter property="keyword" javaType="String" jdbcType="VARCHAR2"/>
 82         <parameter property="beginRownum" javaType="Integer" jdbcType="NUMBER"/>
 83         <parameter property="endRownum" javaType="Integer" jdbcType="NUMBER"/>
 84     </parameterMap>
 85     <select id="pagingQuery" parameterMap="pageSizeRownum" resultClass="Emp">
 86         select temp.empno,temp.ename,temp.job,m.ename,m.empno,temp.hiredate,NVL(temp.sal,0),NVL(temp.comm,0),d.deptno,d.dname,temp.photo,temp.note 
 87         from (SELECT empno,ename,job,mgr,hiredate,sal,comm,deptno,ROWNUM rn,photo,note FROM emp 
 88         <dynamic prepend=" where ">
 89         <![CDATA[(empno like '%$keyword$%' or ename like '%$keyword$%' or job like '%$keyword$%' or mgr like '%$keyword$%' or to_char(hiredate,'yyyy-mm-dd') like '%$keyword$%' or sal like '%$keyword$%' or comm like '%$keyword$%' or deptno like '%$keyword$%') and ROWNUM<=#endRownum# ORDER BY empno) temp,emp m,dept d where temp.rn>#beginRownum# and temp.mgr=m.empno(+) and temp.deptno=d.deptno ]]>
 90         </dynamic>
 91     </select>
 92     
 93     <!-- Recordcount -->
 94     <select id="allRecordcount" resultClass="Long" parameterClass="String">
 95         SELECT count(e.empno) 
 96         FROM emp e 
 97         WHERE empno like '%$keyword$%' or ename like '%$keyword$%' or job like '%$keyword$%' or mgr like '%$keyword$%' or to_char(hiredate,'yyyy-mm-dd') like '%$keyword$%' or sal like '%$keyword$%' or comm like '%$keyword$%' or deptno like '%$keyword$%' ORDER BY empno
 98     </select>    
 99     
100     <insert id="addEmployee" parameterClass="Emp">
101         insert into Emp(empno,ename,job,mgr,hiredate,sal,comm,deptno,photo,note) values(#empno#,#ename#,#job#,#mgr#,#hiredate#,#sal#,#comm#,#deptno#,#photo#,#note#)
102     </insert>
103     <update id="updateOneEmployee" parameterClass="Emp">
104         update Emp set ename=#ename#,job=#job#,mgr=#mgr#,hiredate=#hiredate#,sal=#sal#,comm=#comm#,deptno=#deptno#,photo=#photo#,note=#note# where empno=#empno#
105     </update>
106     <delete id="deleteOneEmp" parameterClass="Integer">
107         delete from emp where empno=#id#
108     </delete>
109 </sqlMap>

testEmployee.java

View Code
  1 package org.xiong.ibatis.demo.model.test;
  2 
  3 import java.io.IOException;
  4 import java.io.Reader;
  5 import java.sql.SQLException;
  6 import java.text.ParseException;
  7 import java.text.SimpleDateFormat;
  8 import java.util.HashMap;
  9 import java.util.List;
 10 
 11 import org.junit.BeforeClass;
 12 import org.junit.Test;
 13 import org.xiong.ibatis.demo.model.Emp;
 14 
 15 import com.ibatis.common.resources.Resources;
 16 import com.ibatis.sqlmap.client.SqlMapClient;
 17 import com.ibatis.sqlmap.client.SqlMapClientBuilder;
 18 
 19 public class testEmployee
 20 {
 21     private static SqlMapClient sqlMapClient;
 22     private static Reader reader;
 23 
 24     @BeforeClass
 25     public static void beforeClass()
 26     {
 27         try
 28         {
 29             reader = Resources
 30                     .getResourceAsReader("org/xiong/ibatis/demo/model/SqlMapConfig.xml");
 31             sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
 32         }
 33         catch (IOException e)
 34         {
 35             e.printStackTrace();
 36         }
 37         finally
 38         {
 39             try
 40             {
 41                 reader.close();
 42             }
 43             catch (IOException e)
 44             {
 45                 e.printStackTrace();
 46             }
 47         }
 48     }
 49 
 50     @Test
 51     public void testFindAllEmp()
 52     {
 53 
 54         try
 55         {
 56             List<Emp> allEmp = sqlMapClient.queryForList("selectAllEmp");
 57             for (Emp e : allEmp)
 58             {
 59                 System.out.println(e);
 60             }
 61         }
 62         catch (SQLException e)
 63         {
 64             e.printStackTrace();
 65         }
 66 
 67     }
 68 
 69     @Test
 70     public void testFindOneEmp()
 71     {
 72         Emp emp = new Emp();
 73         emp.setEmpno(7369);
 74 
 75         try
 76         {
 77             Emp e = (Emp) sqlMapClient.queryForObject("selectOneEmp", emp);
 78             System.out.println(e.getEname());
 79         }
 80         catch (SQLException e)
 81         {
 82             e.printStackTrace();
 83         }
 84 
 85     }
 86 
 87     @Test
 88     public void testDynamicQuery()
 89     {
 90 
 91         List<Emp> emps = null;
 92         try
 93         {
 94             emps = sqlMapClient.queryForList("dynamicQuery", 7369);
 95             for (Emp e : emps)
 96             {
 97                 System.out.println(e);
 98             }
 99         }
100         catch (SQLException e)
101         {
102             e.printStackTrace();
103         }
104     }
105 
106     @Test
107     public void testAddOneEmp()
108     {
109         Emp emp = new Emp();
110         emp.setEmpno(1097);
111         emp.setEname("张三");
112         emp.setJob("要饭的");
113         try
114         {
115             emp.setHiredate(new SimpleDateFormat("yyyy-MM-dd")
116                     .parse("2010-12-01"));
117         }
118         catch (ParseException e)
119         {
120             e.printStackTrace();
121         }
122         emp.setMgr(7369);
123         emp.setSal(451.45f);
124         emp.setComm(100.15f);
125         emp.setDeptno(10);
126         emp.setPhoto("nophoto.jpg");
127         emp.setNote("暂无简介");
128         try
129         {
130             sqlMapClient.insert("addEmployee", emp);
131         }
132         catch (SQLException e)
133         {
134             e.printStackTrace();
135         }
136 
137     }
138 
139     @Test
140     public void testUpdateOneEmp()
141     {
142         Emp emp = new Emp();
143         emp.setEmpno(1097);
144         emp.setEname("张大大");
145         emp.setJob("画家");
146         try
147         {
148             emp.setHiredate(new SimpleDateFormat("yyyy-MM-dd")
149                     .parse("2010-12-22"));
150         }
151         catch (ParseException e)
152         {
153             e.printStackTrace();
154         }
155         emp.setMgr(7369);
156         emp.setSal(451.45f);
157         emp.setComm(100.15f);
158         emp.setDeptno(10);
159         emp.setPhoto("nophoto.jpg");
160         emp.setNote("暂无简介");
161         try
162         {
163             System.out.println("影响了:"
164                     + sqlMapClient.update("updateOneEmployee", emp) + "行!");
165         }
166         catch (SQLException e)
167         {
168             e.printStackTrace();
169         }
170     }
171 
172     @Test
173     public void testDeleteOneEmp()
174     {
175         try
176         {
177             System.out.println("影响了:"
178                     + sqlMapClient.delete("deleteOneEmp", 1097) + "行!");
179         }
180         catch (SQLException e)
181         {
182             e.printStackTrace();
183         }
184     }
185 
186     @Test
187     public void testFindEmpsByPaging()
188     {
189         HashMap<String, Object> parameterMap = new HashMap<String, Object>();
190         parameterMap.put("keyword", "S");
191         parameterMap.put("endRownum", 16);
192         parameterMap.put("beginRownum", 5);
193 
194         try
195         {
196             @SuppressWarnings("unchecked")
197             List<Emp> emps = sqlMapClient.queryForList("pagingQuery",
198                     parameterMap);
199             for (Emp e : emps)
200             {
201                 System.out.println(e);
202             }
203 
204         }
205         catch (SQLException e)
206         {
207             e.printStackTrace();
208         }
209 
210     }
211 
212     @Test
213     public void testGetAllCount()
214     {
215         long allCount = 0;
216         try
217         {
218             allCount = (Long) sqlMapClient
219                     .queryForObject("allRecordcount", "S");
220             System.out.println(allCount);
221         }
222         catch (SQLException e)
223         {
224             // TODO Auto-generated catch block
225             e.printStackTrace();
226         }
227     }
228 
229     @Test
230     public void testFindAllByKeyword()
231     {
232         String keyword = "S";
233         try
234         {
235             @SuppressWarnings("unchecked")
236             List<Emp> emps = sqlMapClient
237                     .queryForList("findByKeyword", keyword);
238             for (Emp e : emps)
239             {
240                 System.out.println(e);
241             }
242 
243         }
244         catch (SQLException e)
245         {
246             e.printStackTrace();
247         }
248     }
249 
250     @Test
251     public void testFindById()
252     {
253         Emp e = null;
254         int id = 7369;
255 
256         try
257         {
258             e = (Emp) sqlMapClient.queryForObject("empFindById", id);
259             System.out.println(e);
260         }
261         catch (SQLException e1)
262         {
263             e1.printStackTrace();
264         }
265     }
266 
267     @Test
268     public void testDynamicQueryWithMC()
269     {
270 
271         List<Emp> emps = null;
272         HashMap<String, Object> parameterMap = new HashMap<String, Object>();
273         parameterMap.put("empno1", 7369);
274         parameterMap.put("empno2", 7788);
275         parameterMap.put("comm", 400);
276         parameterMap.put("sal", 2000);
277         parameterMap.put("hiredate", "1980-12-22");
278         try
279         {
280             emps = sqlMapClient.queryForList(
281                     "dynamicQueryWithMultipleconditions", parameterMap);
282             for (Emp e : emps)
283             {
284                 System.out.println(e);
285             }
286         }
287         catch (SQLException e)
288         {
289             e.printStackTrace();
290         }
291     }
292 }
原文地址:https://www.cnblogs.com/xiongyu/p/2485872.html