Mybatis的动态sql语句if和choose

jdbc.properties:

url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl  
driverClass=oracle.jdbc.OracleDriver  
account=scott  
password=tiger  


mybatis.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration  
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration>  
      
    <properties resource="cn/et/mybatis/lesson01/jdbc.properties">  
          
    </properties>  
  
  <!--  
    配置连接数据库的环境   development开发环境 
  -->  
  <environments default="development">  
    <environment id="development">  
      <!-- 事务交给JDBC来管理   也就是通过 Connection的 commit和rollback管事事务 -->  
      <transactionManager type="JDBC"/>  
      <dataSource type="POOLED">  
        <property name="driver" value="${driverClass}"/>  
        <property name="url" value="${url}"/>  
        <property name="username" value="${account}"/>  
        <property name="password" value="${password}"/>  
      </dataSource>  
    </environment>  
  </environments>  
    
  <mappers>  
    <mapper resource="cn/et/mybaits/lesson02/dynsql/dy_mapper.xml" />  
  </mappers>  
</configuration>  


dy_mapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
    
<!--   
    接口映射  
    namespace必需跟接口的全名一致  
 -->  
<mapper namespace="cn.et.mybaits.lesson02.dynsql.DyMapper">  
      
    <!--  
        动态的sql语句 
     -->  
    <select id="selectEmp" resultType="map" parameterType="map">  
        select * from emp where 1=1  
        <if test="ename!=null">  
            and ename=#{ename}  
        </if>  
    </select>  
      
    <!--   
        choose  
        whe    相当于   if  
        otherwish   相当于     else  
     -->  
      
    <select id="selectEmpBySal" resultType="map" parameterType="map">  
        select * from emp where 1=1  
        <choose>  
            <when test="sal==null">  
                <!--   
                    <    <    小于  
                    >    >    大于  
                    <![CDATA[>]]>  
                    不解析代码块中的代码  
                 -->  
                and sal <![CDATA[>]]>= 0  
            </when>  
            <otherwise>  
                and sal=#{sal}  
            </otherwise>  
        </choose>  
    </select>  
      
      
</mapper>  



DyMapper接口:


<pre name="code" class="java">package cn.et.mybaits.lesson02.dynsql;  
  
import java.util.List;  
import java.util.Map;  
  
public interface DyMapper {  
  
    public List<Map> selectEmp(Map map);  
      
  
    public List<Map> selectEmpBySal(Map map);  
}  
</pre>  
<div><br>  
</div>  
<pre></pre>  
<br>  
<p></p>  
<p><br>  
</p>  
<p></p>  
<h2 style="font-family:monospace; white-space:pre"><a name="t4"></a>TestMybatis:</h2>  
<pre name="code" class="java">package cn.et.mybaits.lesson02.dynsql;  
  
import java.io.InputStream;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import org.apache.ibatis.session.SqlSession;  
import org.apache.ibatis.session.SqlSessionFactory;  
import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  
public class TestMybatis {  
      
    public static SqlSession getSession(){  
        String resource = "/cn/et/mybaits/lesson02/mybatis.xml";  
        InputStream inputStream = TestMybatis.class.getResourceAsStream(resource);  
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
        //打开会话  
        SqlSession session = sqlSessionFactory.openSession();  
        return session;  
    }  
  
    /*public static void main(String[] args) {  
        SqlSession session = getSession();  
        DyMapper dy = session.getMapper(DyMapper.class);  
        Map map = new HashMap();  
        map.put("ename", "李黑");  
        List list = dy.selectEmp(map);  
        System.out.println(list.size());  
          
    }*/  
      
    public static void main(String[] args) {  
        SqlSession session = getSession();  
        DyMapper dy = session.getMapper(DyMapper.class);  
        Map map = new HashMap();  
        map.put("sal", 5000);  
        List list = dy.selectEmpBySal(map);  
        System.out.println(list.size());  
          
    }  
}</pre><br>  
<p></p>  
<p><br>  
</p>  
<p><br>  
</p>  
<h2><a name="t5"></a>mybatis注解的动态sql语句映射:</h2>  
<p></p><pre name="code" class="java">package cn.et.mybaits.lesson02.homework;  
  
import java.util.List;  
import java.util.Map;  
  
import org.apache.ibatis.annotations.Select;  
  
public interface DyAnnoMapper {  
      
    @Select(value="<script>select * from emp where 1=1 <if test='sal!=null'> and sal>=#{sal}</if></script>")  
    public List<Map<String, Object>> query(Map map);  
}  
</pre><br>  
<span style="font-size:18px">其他调用方法一法</span><p></p>  
<p><br>  
</p>  
<pre name="code" class="html"><p></p></pre>  































































































































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值