系统相关
首页 > 系统相关> > mybatis单框架之动态sql

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>

标签:系统,安装,命令,方式,配置,QSL
来源: