zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    UNION ALL
    jquery.validate的使用
    通过匹配绑定select option的文本值 模糊匹配
    .net 时间操作[摘抄]
    判断Table表中是否含有某一列
    将数组,表的某一列转换为string字符串的方法
    选出某一列不重复,某一列作为选择条件,其他列正常输出(摘抄)
    SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序(转)
    金山毒霸占用80端口
    DropDownList 绑定数据后 插入一条不属于表中的数据
  • 原文地址:https://www.cnblogs.com/xiongyu/p/2485872.html
Copyright © 2011-2022 走看看