Mybatis的动态sql语句if和choose

来源:互联网 发布:2016同志网络剧推荐 编辑:程序博客网 时间:2024/06/06 01:07

jdbc.properties:

[plain] view plain copy
  1. url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl  
  2. driverClass=oracle.jdbc.OracleDriver  
  3. account=scott  
  4. password=tiger  


mybatis.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE configuration  
  3.   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  5. <configuration>  
  6.       
  7.     <properties resource="cn/et/mybatis/lesson01/jdbc.properties">  
  8.           
  9.     </properties>  
  10.   
  11.   <!--  
  12.     配置连接数据库的环境   development开发环境 
  13.   -->  
  14.   <environments default="development">  
  15.     <environment id="development">  
  16.       <!-- 事务交给JDBC来管理   也就是通过 Connection的 commit和rollback管事事务 -->  
  17.       <transactionManager type="JDBC"/>  
  18.       <dataSource type="POOLED">  
  19.         <property name="driver" value="${driverClass}"/>  
  20.         <property name="url" value="${url}"/>  
  21.         <property name="username" value="${account}"/>  
  22.         <property name="password" value="${password}"/>  
  23.       </dataSource>  
  24.     </environment>  
  25.   </environments>  
  26.     
  27.   <mappers>  
  28.     <mapper resource="cn/et/mybaits/lesson02/dynsql/dy_mapper.xml" />  
  29.   </mappers>  
  30. </configuration>  


dy_mapper.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper  
  3.   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  5.     
  6. <!--   
  7.     接口映射  
  8.     namespace必需跟接口的全名一致  
  9.  -->  
  10. <mapper namespace="cn.et.mybaits.lesson02.dynsql.DyMapper">  
  11.       
  12.     <!--  
  13.         动态的sql语句 
  14.      -->  
  15.     <select id="selectEmp" resultType="map" parameterType="map">  
  16.         select * from emp where 1=1  
  17.         <if test="ename!=null">  
  18.             and ename=#{ename}  
  19.         </if>  
  20.     </select>  
  21.       
  22.     <!--   
  23.         choose  
  24.         whe    相当于   if  
  25.         otherwish   相当于     else  
  26.      -->  
  27.       
  28.     <select id="selectEmpBySal" resultType="map" parameterType="map">  
  29.         select * from emp where 1=1  
  30.         <choose>  
  31.             <when test="sal==null">  
  32.                 <!--   
  33.                     <    <    小于  
  34.                     >    >    大于  
  35.                     <![CDATA[>]]>  
  36.                     不解析代码块中的代码  
  37.                  -->  
  38.                 and sal <![CDATA[>]]>= 0  
  39.             </when>  
  40.             <otherwise>  
  41.                 and sal=#{sal}  
  42.             </otherwise>  
  43.         </choose>  
  44.     </select>  
  45.       
  46.       
  47. </mapper>  




DyMapper接口:

[html] view plain copy
  1. <pre name="code" class="java">package cn.et.mybaits.lesson02.dynsql;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. public interface DyMapper {  
  7.   
  8.     public List<Map> selectEmp(Map map);  
  9.       
  10.   
  11.     public List<Map> selectEmpBySal(Map map);  
  12. }  
  13. </pre>  
  14. <div><br>  
  15. </div>  
  16. <pre></pre>  
  17. <br>  
  18. <p></p>  
  19. <p><br>  
  20. </p>  
  21. <p></p>  
  22. <h2 style="font-family:monospace; white-space:pre"><a name="t4"></a>TestMybatis:</h2>  
  23. <pre name="code" class="java">package cn.et.mybaits.lesson02.dynsql;  
  24.   
  25. import java.io.InputStream;  
  26. import java.util.HashMap;  
  27. import java.util.List;  
  28. import java.util.Map;  
  29.   
  30. import org.apache.ibatis.session.SqlSession;  
  31. import org.apache.ibatis.session.SqlSessionFactory;  
  32. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  33.   
  34. public class TestMybatis {  
  35.       
  36.     public static SqlSession getSession(){  
  37.         String resource = "/cn/et/mybaits/lesson02/mybatis.xml";  
  38.         InputStream inputStream = TestMybatis.class.getResourceAsStream(resource);  
  39.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
  40.         //打开会话  
  41.         SqlSession session = sqlSessionFactory.openSession();  
  42.         return session;  
  43.     }  
  44.   
  45.     /*public static void main(String[] args) {  
  46.         SqlSession session = getSession();  
  47.         DyMapper dy = session.getMapper(DyMapper.class);  
  48.         Map map = new HashMap();  
  49.         map.put("ename", "李黑");  
  50.         List list = dy.selectEmp(map);  
  51.         System.out.println(list.size());  
  52.           
  53.     }*/  
  54.       
  55.     public static void main(String[] args) {  
  56.         SqlSession session = getSession();  
  57.         DyMapper dy = session.getMapper(DyMapper.class);  
  58.         Map map = new HashMap();  
  59.         map.put("sal", 5000);  
  60.         List list = dy.selectEmpBySal(map);  
  61.         System.out.println(list.size());  
  62.           
  63.     }  
  64. }</pre><br>  
  65. <p></p>  
  66. <p><br>  
  67. </p>  
  68. <p><br>  
  69. </p>  
  70. <h2><a name="t5"></a>mybatis注解的动态sql语句映射:</h2>  
  71. <p></p><pre name="code" class="java">package cn.et.mybaits.lesson02.homework;  
  72.   
  73. import java.util.List;  
  74. import java.util.Map;  
  75.   
  76. import org.apache.ibatis.annotations.Select;  
  77.   
  78. public interface DyAnnoMapper {  
  79.       
  80.     @Select(value="<script>select * from emp where 1=1 <if test='sal!=null'> and sal>=#{sal}</if></script>")  
  81.     public List<Map<String, Object>> query(Map map);  
  82. }  
  83. </pre><br>  
  84. <span style="font-size:18px">其他调用方法一法</span><p></p>  
  85. <p><br>  
  86. </p>  
  87. <pre name="code" class="html"><p></p></pre>  
  88.      
阅读全文
0 0