zoukankan      html  css  js  c++  java
  • mybatis 动态sql 的笔记 以及标签

    MyBatis常用OGNL表达式

    1. e1 or e2
    2. e1 and e2
    3. e1 == e2,e1 eq e2
    4. e1 != e2,e1 neq e2
    5. e1 lt e2:小于
    6. e1 lte e2:小于等于,其他gt(大于),gte(大于等于)
    7. e1 in e2
    8. e1 not in e2
    9. e1 + e2,e1 * e2,e1/e2,e1 - e2,e1%e2
    10. !e,not e:非,求反
    11. e.method(args)调用对象方法
    12. e.property对象属性值
    13. e1[ e2 ]按索引取值,List,数组和Map
    14. @class@method(args)调用类的静态方法
    15. @class@field调用类的静态字段值

    ==============================

    注意:不能使用   <   ,因为该符号在xml中表示一个标签的开始符号,因此会报错,需要进行转义。

    1.1.if

    n  if标签:判断语句,用于进行逻辑判断的。

           test属性:用来编写表达式,支持ognl.

    案例:查询男性用户,如果输入了用户名,按用户名模糊查询,如果没有输入用户名,就查询所有男性用户。

    正常的sql语句:查询男性并且用户名中包含zhang

    但是要求时还要判断用户是否输入用户名来做不同的查询要求,而这里似乎没有办法判断是否输入了用户名,因此可以考虑使用动态sql来完成这个功能。

    1.1.1.         定义接口

    在UserMapper接口中定义方法:

       /**

        * 查询男性用户,如果输入了用户名,按用户名模糊查询

        * @param userName

        * @return

        */

       public List<User> queryUsersLikeUserName(@Param("userName")String userName);

    1.1.2.         编写mapper.xml

    在UserMapper映射文件中,定义接口方法对应的Statement

    <select id="queryUsersLikeUserName" resultType="User">

           select * from tb_user where sex = 1

           <!--

               if标签:用来进行判断

                  test属性:编写ognl表达式

            -->

           <if test="userName!=null and userName.trim()!=''">

               and user_name like '%' #{userName} '%'

           </if>

        </select>

    1.1.3.         测试

    在UserMapperTest测试类中,添加测试用例

    1.1.3.1.      测试1

    当用户名为" "或者null或者""时

    @Test

        public void testQueryUsersLikeUserName(){

           List<User> list = userMapper.queryUsersLikeUserName(" ");

           for (User user : list) {

               System.out.println(user);

           }

        }

    查询结果:查询出了所有男性

  • 相关阅读:
    1.数据结构《Pytorch神经网络高效入门教程》Deeplizard
    plt.figure()的使用,plt.plot(),plt.subplot(),plt.subplots()和图中图
    可变长参数
    np.linspace,numpy中的linspace()
    python和numpy中sum()函数的异同
    maven install 错误
    spring boot启动后执行方法
    java 定时任务多线程处理
    java 生成txt文件
    java 方法超时
  • 原文地址:https://www.cnblogs.com/yirgaMonkey/p/9219901.html
Copyright © 2011-2022 走看看