mybatis单框架之动态sql


mybatis单框架之动态sql

1 实现单条件模糊查找(if语句)

1.1 接口方法

/*传入就按照名字查 没有就查全部*/
List<Emp> find(String ename);

1.2 xml文件中select标签

<!--nysql数据库是不区分大小写的 要想区分加上binary关键字-->
<select id="find" resultType="Emp">
    select * from emp
    <if test="ename!=null and ename!=">
        where ename like %${ename}%
    </if>
</select>

1.3 测试代码

@Test
public void t1(){
          
   
    SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
    SqlSession sqlSession = sf.openSession();
    EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    List<Emp> emps = mapper.find("a");
    emps.forEach(System.out::println);
    sqlSession.commit();
}

1.5 总结

2 实现单条件模糊查找(if语句)

2.1 接口方法

List<Emp> find(@Param("ename") String ename,@Param("job") String job);

2.2 xml文件中select标签

<!--是不区分大小写的 要想区分加上binary
    where配合if使用 有一个才带上where
    -->
   <select id="find" resultType="Emp">
       select * from emp
       <where>
           <if test="ename!=null and ename!=">
               ename like %${ename}%
           </if>
           <if test="job!=null and job!=">
               and job like %${job}%
           </if>
       </where>
   </select>

2.3 测试代码

@Test
    public void t1(){
          
   
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> emps = mapper.find("a","m");
        emps.forEach(System.out::println);
        sqlSession.commit();
    }

2.5 总结

a where标签里面的if标签没有一个符合条件时,WHERE是不会增加的,就是查全部,只要有一个符合条件,则会加上where
b where标签一般于if搭配着使用
c 多个条件时,and标签写在第二个if标签里面的前头

3 多选一(choose标签,相当于switch)

3.1 接口方法

List<Emp> choose(@Param("ename") String ename,@Param("job") String job);

3.2 xml文件中select标签

<!--choose 类似于switch或多重if-->
    <select id="choose" resultType="Emp">
        select * from emp
        <choose>
            <when test="ename!=null">
                where ename like %${ename}%
            </when>
            <when test="job!=null">
                where job like %${job}%
            </when>
            <otherwise>
                order by sal desc
            </otherwise>
        </choose>
    </select>

本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;

2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;

3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;

4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;

5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293011.html

(0)
上一篇 2022年11月12日
下一篇 2022年11月12日

相关推荐

发表回复

登录后才能评论