Mybatis 模糊查询demo

一、模糊查询

需求:根据博客的名字查询博客列表(模糊查询)

方式一:使用#传参
mapper:
注意:参数占位符名称任意
    <select id="selectBlogByTitle" parameterType="string" resultMap="blogResultMap">
        select * from blog where title like #{title}
    </select>
接口:
    List<Blog> selectBlogByTitle(String title);
测试:
    @Test
    public void testSelectBlogByTitle() {
        
        SqlSession session = MyBatisUtil.getSqlSession();
        
        BlogMapper blogMapper = session.getMapper(BlogMapper.class);
        List<Blog> blogList = blogMapper.selectBlogByTitle("%o%");
        
        session.close();
        
        System.out.println(blogList);
    }

方式二:使用$传参
mapper:
注意:当时用$传参时,如果参数是单值类型(简单类型),并且只有一个参数,
那么参数必须使用  value 占位,并且如果参数是字符串,要使用引号:
    <select id="selectBlogByTitle2" parameterType="string" resultMap="blogResultMap">
        select * from blog where title like '%${value}%'
    </select>
接口:
List<Blog> selectBlogByTitle2(String title);
测试:
    @Test
    public void testSelectBlogByTitle2() {
        
        SqlSession session = MyBatisUtil.getSqlSession();
        
        BlogMapper blogMapper = session.getMapper(BlogMapper.class);
        //List<Blog> blogList = blogMapper.selectBlogByTitle2("%o%");
        List<Blog> blogList = blogMapper.selectBlogByTitle2("o");
        
        session.close();
        
        System.out.println(blogList);
    }

比较#和$的区别:
  • #是占位符?,$是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么要使用引号
  • 尽量使用# 而不是 $
  • 当参数表示表名或列名的时候,只能使用 $

不区分大小写的查询:
    <select id="selectBlogByTitle2" parameterType="string" resultMap="blogResultMap">
        select * from blog where lower(title) like lower('%${value}%')
    </select>

二、排序

需求:按照某一列排序
注意:
1、如果使用#,那么sql不会报错,但是排序功能不好使;所以应该使用$
2、中文排序,需要使用mysql的转换函数 CONVERT
mapper
    <select id="selectBlogBySort" parameterType="string" resultMap="blogResultMap">
        select * from blog order by CONVERT(${value} USING gbk)
        <!-- select * from blog order by ${value} -->
    </select>
接口
List<Blog> selectBlogBySort(String column);

测试
    @Test
    public void testSelectBlogBySort() {
        
        SqlSession session = MyBatisUtil.getSqlSession();
        
        BlogMapper blogMapper = session.getMapper(BlogMapper.class);
        List<Blog> blogList = blogMapper.selectBlogBySort("title");
        /*List<Blog> blogList = blogMapper.selectBlogBySort("CONVERT(title USING gbk)");*/
        
        session.close();
        
        System.out.println(blogList);
    }

猜你喜欢

转载自blog.csdn.net/qq_41657768/article/details/80777211