所需的maven依赖

<dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><!-- lombok,自己生成实体类的getter和setter以及toString等方法 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>

模糊查询的三种实现方式

MybatisSQL语句一

此写法是错误的,此写法会报如下的错误,原因是"%#{mohu}%"中的“#”号会被mybatis解析为占位符“?”从而导致SQL语句出错,编译后的SQL语句变成了

select * from t_user where username like "%?%"

这与预期的结果不一致,自然就会报如下的错误,该写法要特别注意%和#的位置

<!--错误的写法-->
<select id="getUserByLike" resultType="User">select * from t_user where username like "%#{mohu}%"
</select>

方式一正确的写法

<select id="getUserByLike" resultType="User">select * from t_user where username like "%"#{mohu}"%"
</select>

MybatisSQL语句二

<select id="getUserByLike" resultType="User">select * from t_user where username like '%${mohu}%'
</select>

MybatisSQL语句三

<select id="getUserByLike" resultType="User">select * from t_user where username like concat('%',#{mohu},'%')</select>

mapper层接口

public interface SpecialSQLMapper {/*** 通过用户名模糊查询用户信息* @param mohu* @return*/List<User> getUserByLike(@Param("mohu") String mohu);
}

注意:select标签中的id必须是mapper接口的方法名,resultType可以是实体类起别名后的名称,要不然就是实体类的全限定名称,即(com.xxx.entity.xxx,若resultType使用别名时必须在mybatis的核心配置文件配置如下

mybatis的核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--MyBatis核心配置文件中的标签必须要按照指定的顺序配置:properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?--><typeAliases><package name="com.example.mybatis.entity"/></typeAliases><!--引入mybatis的映射文件--><mappers><package name="com.example.mybatis.mapper"/></mappers>
</configuration>

实体类


@Data
public class User {private Integer id;private String username;private String password;private Integer age;private String gender;private String email;
}

工具类

public class SqlSessionUtil {public static SqlSession getSqlSession(){SqlSession sqlSession = null;try {//获取核心配置文件的输入流InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//获取SqlSessionFactoryBuilderSqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//获取SqlSessionFactorySqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);//获取SqlSession对象sqlSession = sqlSessionFactory.openSession(true);} catch (IOException e) {e.printStackTrace();}return sqlSession;}}

测试

public class SpecialSQLMapperTest {@Testpublic void testGetUserByLike(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);List<User> list = mapper.getUserByLike("a");list.forEach(System.out::println);}
}

Mybatis的模糊查询写法相关推荐

  1. mybatis like模糊查询_Java自学之mybatis:模糊查询和多条件查询

    学习目的 使用mybatis进行模糊查询:查找category_表中包含cat的记录. 使用mybatis进行多条件查询:查找category_表中id>1,包含cat的记录. Part 1 模 ...

  2. MyBatis 解决模糊查询包含特殊字符

    第一块:MyBatis 实现模糊查询方式 1.1 sql中字符串拼接 SELECT * FROM 表名 WHERE 字段名 LIKE CONCAT(CONCAT('%', #{参数}), '%'); ...

  3. MyBatis实现模糊查询的三种方式

    MyBatis实现模糊查询的三种方式 准备 模糊查询 方式一 方式二 方式三 由于#{}是占位符本身,自带单引号,所以在模糊查询时需要一些技巧. 准备 数据库表 bean 模糊查询 以查询出所有用户名 ...

  4. Mybatis学习记录(四)——Mybatis实现模糊查询的三种方法

    2018.4.8 仅为个人理解 不足之处欢迎指正~ 数据库说明: 我们在之前的数据库中添加三列:sex major class 现有如下记录: Mybatis进行模糊查询: Mybatis进行模糊查询 ...

  5. SSM—mybatis框架-注解开发-动态sql(where,set,trim,choose,when,foreach)-模糊查询写法-特殊符号处理-缓存

    文章目录 2.0.注解 2.1.动态sql 2.1.1.where 2.1.2.set 2.1.3.trim 2.1.3.1.trim的where 2.1.3.2.trim的set 2.1.4.1.c ...

  6. Mybatis中模糊查询的各种写法(转)

    为什么80%的码农都做不了架构师?>>>    模糊查询: 工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName ...

  7. MyBatis:模糊查询的4种实现方式

    1.根据姓名模糊查询员工信息 1.1.方式一 步骤一:编写配置文件 步骤二:测试 步骤三:分析 此种方式需要在调用处手动的去添加"%"通配符. 1.2.方式二 说明: 使用方式一可 ...

  8. MyBatis Plus 模糊查询报错, 但是不影响返回结果[解决]

    1 现状 模糊查询报错, 但不影响查询结果 2 报错信息 optimize this sql to a count sql has exception, sql:xxxxxxxxxxxxxxxxxxx ...

  9. MyBatis中模糊查询LIKE的三种方式

    在操作数据库时,查询是最常用的语句,模糊查询也是数据库SQL中使用频率很高的SQL语句,利用MyBatis框架来进行更加灵活的模糊查询,有如下三种方式: (1)直接传参法        直接传参法,就 ...

最新文章

  1. 实验二十二 SCVMM中的SQL Server配置文件
  2. 安装好了java7怎么打开,Windows怎么安装JDK1.7 JDK1.7怎么安装图解
  3. 将测微仪与Spring Boot 2一起使用
  4. MySQL数据库模式_SQL模式
  5. MOSFET(一):基础
  6. nodejs基础 -- 全局对象
  7. HTML 禁用Select下拉框的上下左右键盘按键默认事件
  8. SQLMAP注入拖库过程 1
  9. openresty性能调优
  10. 哪个软件能做英语测试,英语考试软件哪个好用 英语考试软件神器推荐
  11. 问题adb remount提示Devices Locked
  12. HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
  13. Indy相关函数用法
  14. 黑马程序员——网络编程的应用
  15. IEEE trans使用latex模板部分字体是黑色,部分变成了绿色
  16. 浏览器如何使用快捷键恢复关闭的网页及关闭当前网页
  17. CTFshow - 七夕杯复现
  18. 如何优雅的修改 Kubernetes Master 节点 IP?可没你想象中那么简单!
  19. 【CSS】相对长度单位 绝对长度单位,vw/vh , rem等
  20. 笔记本“电源已接通,未充电”的解决办法 win7

热门文章

  1. 独家食用指南系列|Android端SQLCipher的攻与防新编
  2. 科普:网格屏是什么意思?LED网格屏怎么安装
  3. 编程达人海哥c语言,编程达人 我在写海哥初级班39课作业的时候遇到了问题,希望有兄弟帮忙解答一下...
  4. Angular+PrimeNg 分页器给后端传参分页
  5. 新疆维吾尔自治区坡度数据
  6. 读懂 互联网巨头 【中台之战】 以及 中台 发展思维
  7. 超低功耗MCU的选择方法
  8. 聊斋2聂小倩java华语版,[转载]《聊斋志异》2.聂小倩(二)蒲松龄 著  宋德利 译...
  9. android gamed,先游DGame
  10. Unity3D for Android 纹理压缩支持