Mybatis的模糊查询写法
所需的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的模糊查询写法相关推荐
- mybatis like模糊查询_Java自学之mybatis:模糊查询和多条件查询
学习目的 使用mybatis进行模糊查询:查找category_表中包含cat的记录. 使用mybatis进行多条件查询:查找category_表中id>1,包含cat的记录. Part 1 模 ...
- MyBatis 解决模糊查询包含特殊字符
第一块:MyBatis 实现模糊查询方式 1.1 sql中字符串拼接 SELECT * FROM 表名 WHERE 字段名 LIKE CONCAT(CONCAT('%', #{参数}), '%'); ...
- MyBatis实现模糊查询的三种方式
MyBatis实现模糊查询的三种方式 准备 模糊查询 方式一 方式二 方式三 由于#{}是占位符本身,自带单引号,所以在模糊查询时需要一些技巧. 准备 数据库表 bean 模糊查询 以查询出所有用户名 ...
- Mybatis学习记录(四)——Mybatis实现模糊查询的三种方法
2018.4.8 仅为个人理解 不足之处欢迎指正~ 数据库说明: 我们在之前的数据库中添加三列:sex major class 现有如下记录: Mybatis进行模糊查询: Mybatis进行模糊查询 ...
- 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 ...
- Mybatis中模糊查询的各种写法(转)
为什么80%的码农都做不了架构师?>>> 模糊查询: 工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName ...
- MyBatis:模糊查询的4种实现方式
1.根据姓名模糊查询员工信息 1.1.方式一 步骤一:编写配置文件 步骤二:测试 步骤三:分析 此种方式需要在调用处手动的去添加"%"通配符. 1.2.方式二 说明: 使用方式一可 ...
- MyBatis Plus 模糊查询报错, 但是不影响返回结果[解决]
1 现状 模糊查询报错, 但不影响查询结果 2 报错信息 optimize this sql to a count sql has exception, sql:xxxxxxxxxxxxxxxxxxx ...
- MyBatis中模糊查询LIKE的三种方式
在操作数据库时,查询是最常用的语句,模糊查询也是数据库SQL中使用频率很高的SQL语句,利用MyBatis框架来进行更加灵活的模糊查询,有如下三种方式: (1)直接传参法 直接传参法,就 ...
最新文章
- 实验二十二 SCVMM中的SQL Server配置文件
- 安装好了java7怎么打开,Windows怎么安装JDK1.7 JDK1.7怎么安装图解
- 将测微仪与Spring Boot 2一起使用
- MySQL数据库模式_SQL模式
- MOSFET(一):基础
- nodejs基础 -- 全局对象
- HTML 禁用Select下拉框的上下左右键盘按键默认事件
- SQLMAP注入拖库过程 1
- openresty性能调优
- 哪个软件能做英语测试,英语考试软件哪个好用 英语考试软件神器推荐
- 问题adb remount提示Devices Locked
- HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
- Indy相关函数用法
- 黑马程序员——网络编程的应用
- IEEE trans使用latex模板部分字体是黑色,部分变成了绿色
- 浏览器如何使用快捷键恢复关闭的网页及关闭当前网页
- CTFshow - 七夕杯复现
- 如何优雅的修改 Kubernetes Master 节点 IP?可没你想象中那么简单!
- 【CSS】相对长度单位 绝对长度单位,vw/vh , rem等
- 笔记本“电源已接通,未充电”的解决办法 win7
热门文章
- 独家食用指南系列|Android端SQLCipher的攻与防新编
- 科普:网格屏是什么意思?LED网格屏怎么安装
- 编程达人海哥c语言,编程达人 我在写海哥初级班39课作业的时候遇到了问题,希望有兄弟帮忙解答一下...
- Angular+PrimeNg 分页器给后端传参分页
- 新疆维吾尔自治区坡度数据
- 读懂 互联网巨头 【中台之战】 以及 中台 发展思维
- 超低功耗MCU的选择方法
- 聊斋2聂小倩java华语版,[转载]《聊斋志异》2.聂小倩(二)蒲松龄 著 宋德利 译...
- android gamed,先游DGame
- Unity3D for Android 纹理压缩支持