17MyBatis - MyBatis模糊查询

简介: 17MyBatis - MyBatis模糊查询

MyBatis实现根据用户名模糊查询用户

查询sql:

SELECT * FROM user WHERE username LIKE '%王%'

方法一

映射文件:

在User.xml配置文件中添加如下内容:

  <!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->
  <!-- resultType的配置和返回一个结果的配置一样 -->
  <select id="queryUserByUsername1" parameterType="string"
    resultType="cn.itcast.mybatis.pojo.User">
    SELECT * FROM `user` WHERE username LIKE #{username}
  </select>

测试程序:

MybatisTest中添加测试方法如下:

  @Test
    public void testQueryUserByUsername1() throws Exception {
        // 4. 创建SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 5. 执行SqlSession对象执行查询,获取结果User
        // 查询多条数据使用selectList方法
        List<Object> list = sqlSession.selectList("queryUserByUsername1", "%王%");
        // 6. 打印结果
        for (Object user : list) {
            System.out.println(user);
        }
        // 7. 释放资源
        sqlSession.close();
    }

运行结果:

201904031140057_.png

方法二

映射文件:

在User.xml配置文件中添加如下内容:

<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->
<select id="queryUserByUsername2" parameterType="string"
    resultType="cn.itcast.mybatis.pojo.User">
    SELECT * FROM `user` WHERE username LIKE '%${value}%'
</select>

测试程序:

MybatisTest中添加测试方法如下:

 @Test
    public void testQueryUserByUsername2() throws Exception {
        // 4. 创建SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 5. 执行SqlSession对象执行查询,获取结果User
        // 查询多条数据使用selectList方法
        List<Object> list = sqlSession.selectList("queryUserByUsername2", "王");
        // 6. 打印结果
        for (Object user : list) {
            System.out.println(user);
        }
        // 7. 释放资源
        sqlSession.close();
    }

运行结果:

20190403114234400_.png

小结

1) #{}和${}

  • #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换。#{}可以有效防止sql注入。
  • #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值
  • #{}括号中可以是value或其它名称。
  • ${}表示拼接sql串,通过 $ { }可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换
  • $ { }可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

2) parameterType和resultType

  • parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
  • resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中

3) selectOne和selectList

selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:

20190403114823212_.png

selectList可以查询一条或多条记录。

目录
相关文章
|
6月前
|
SQL Java 数据库连接
Mybatis【Map传参与模糊查询】
Mybatis【Map传参与模糊查询】
|
SQL Java 数据库连接
MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射
MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射
382 0
|
SQL Java 数据库连接
在mybatis中,使用map传递参数和进行模糊查询的方法
在mybatis中,使用map传递参数和进行模糊查询的方法
383 0
|
SQL XML Java
Mybatis系列(二)之动态SQL和模糊查询
Mybatis系列(二)之动态SQL和模糊查询
|
SQL XML Java
Mybatis:SQL注入问题 like模糊查询 多表查询 动态SQL
Mybatis:SQL注入问题 like模糊查询 多表查询 动态SQL
1133 0
|
Java 关系型数据库 MySQL
MyBatis模糊查询like的三种方式
MyBatis模糊查询like的三种方式
105 0
|
SQL Java 数据库连接
MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射,让你在面试中脱颖而出!!
MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射,让你在面试中脱颖而出!!
209 0
|
6月前
|
Java 数据库连接 mybatis
Mybatis中模糊查询like语句的使用方法
Mybatis中模糊查询like语句的使用方法
69 0
|
SQL 安全 Java
MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍
MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍
189 0