Mybatis映射文件SQL语句模糊查询

1. “%”#{value}"%" 在参数中不需要添加 %_ 推荐使用

2. ‘%${value}%’ 在参数中不需要添加 %_

3. #{abc} 在参数中添加 %_

#和$的区别和注意事项

${}直接拼接 ,不会转换类型

如果是简单类型,必须写${value}
如果是pojo类型,${属性名}(注意:需要转换类型)

#{}相当于占位符,可以自动的转换类型 可以防止SQL注入

如果是简单类型,可以随便写${随便写}
如果是pojo类型,${属性名}(注意:可以自动转换类型)

一、# “%”#{value}"%"

1.UserMapper.xml

<select id="findByUsername" parameterType="java.lang.String" resultType="com.william.domain.User">select * from user where username like "%"#{value}"%"</select>

2.TestMybatis

    /*** 模糊查询* 通过用户名字模糊查询*/@Testpublic void findByUsername(){InputStream inputStream = Resources.class.getClassLoader().getResourceAsStream("Mybatis-configuration.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();List<User> selectList = sqlSession.selectList("com.william.mapper.UserMapper.findByUsername","a");for (Object o : selectList) {System.out.println(o);}sqlSession.close();}

3.测试结果

执行的SQL语句

Preparing: select * from user where username like "%"?"%"
Parameters: a(String)

二、$ ‘%${value}%’

1.UserMapper.xml

 <!--模糊查询--><select id="findByUsername" parameterType="java.lang.String" resultType="com.william.domain.User">select * from user where username like '%${value}%'</select>

2.TestMybatis

    /*** 模糊查询* 通过用户名字模糊查询*/@Testpublic void findByUsername(){InputStream inputStream = Resources.class.getClassLoader().getResourceAsStream("Mybatis-configuration.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();List<User> selectList = sqlSession.selectList("com.william.mapper.UserMapper.findByUsername","a");for (Object o : selectList) {System.out.println(o);}sqlSession.close();}

3.测试结果

执行的SQL语句

Preparing: select * from user where username like '%a%'
Parameters:

三、在测试类参数中添加

1.UserMapper.xml

<select id="findByUsername" parameterType="java.lang.String" resultType="com.william.domain.User">select * from user where username like  #{abc}</select>

2.TestMybatis

  /*** 模糊查询* 通过用户名字模糊查询*/@Testpublic void findByUsername(){InputStream inputStream = Resources.class.getClassLoader().getResourceAsStream("Mybatis-configuration.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();List<User> selectList = sqlSession.selectList("com.william.mapper.UserMapper.findByUsername","%a%");for (Object o : selectList) {System.out.println(o);}sqlSession.close();}

3.测试结果

执行的SQL语句

 Preparing: select * from user where username like ? Parameters: %a%(String)

Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项相关推荐

  1. 六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性

    文章目录 六.MyBatis特殊的SQL 6.1 模糊查询 6.2 动态设置表名 6.3 校验名称唯一性 本人其他相关文章链接 六.MyBatis特殊的SQL 6.1 模糊查询 方式1:select ...

  2. sql语句模糊查询以及时间区间筛选

    最近做了个接口参数是是查询数据库的项目,恶补了一下sql语句 模糊查询(最简单写法%任意%) select * from log where seatname like'%192.168.15.121 ...

  3. SQL语句模糊查询 JavaWeb 项目 dao层 【常用来做搜索框】

    目的:搜索框,通过输入一些关键词,查询含有关键词的书名 通过一条查询语句能够实现用户所有的条件进行查询 刚开始的SQL语句如下: String sql = "SELECT * FROM bo ...

  4. 如何用SQL语句模糊查询数据库中的表名

    有时候,数据库中的表名太多,而你又不是清楚地记得表名,那么你可以用下面SQL语句,模糊地查询你想要的表名: select  table_name,tablespace_name,status,temp ...

  5. java sql语句模糊查询

    Dao层使用like对于关键字的模糊查询 今天在做开发的时候需要使用like 对关键字进行模糊查询,可是总是写不好,多次尝试发现有许多坑,在此记录下: //错误,后面参数实际传入mysql服务中会变为 ...

  6. sql语句--模糊查询

    模糊查询 1.like 表示模糊查询,这个没什么难的,已经见识过了. 2.配合like关键字,% 表示任意多个字符,表示这个玩意第一次知道,走着-- select * from students wh ...

  7. Mybatis的动态sql语句的查询

    if <select id="findActiveBlogWithTitleLike"resultType="Blog">SELECT * FROM ...

  8. mybatis的动态sql及模糊查询

    1.动态sql 使用类似于jstl表达式来实现 2.模糊查找 用一个对象来封装条件 步骤: 1)新建一个条件实体 package com.hy.mybatis.entity;public class ...

  9. 如何使用SQL进行模糊查询

    SQL语句--模糊查询 执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 其中,关于条件,SQL提供了四种匹 ...

最新文章

  1. 从0学人脸识别,我花3小时复现了Eigenfaces For Recognition
  2. 零起点入门教程:用宜搭简单布局一个首页
  3. java 入门 博客园_javaweb入门
  4. 在.NET Core 中实现健康检查
  5. eclipse导出doc文档
  6. 关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
  7. 转行人工智能,不得不温故的数学基础知识
  8. 使用git上传项目到github
  9. java多线程thread使用_Java多线程——thread及runnable的基本使用及交替执行
  10. 最新app源码下载:200款优秀Android项目源码
  11. 进度计划中的时间相关术语
  12. (简单有效)vivo手机怎么不root激活Xposed框架
  13. 利用51单片机定时器模拟输出PWM波
  14. matlab数细胞实验图片,献给初学者:手把手教你做细胞计数实验
  15. Python获取屏幕坐标,自动发送信息
  16. [转] 彼得林奇:最珍贵的成长股投资精髓
  17. 找不到服务器或应用项目,版本找不到服务器应用程序、源文件或项目的解决办法...
  18. Linux 常用命令 Updating
  19. 用什么软件可以给照片加文字描述?
  20. 工业机械设备设计与艺术设计

热门文章

  1. jooq和jdbc_将jOOQ与JDBC比较
  2. 平台框架_从框架到平台
  3. Elasticsearch SQL
  4. 如何在Spring Boot应用程序中使用配置文件
  5. 在任何无法理解的情况下,请编写脚本
  6. 使用Java EE和OIDC构建Java REST API
  7. 在Java中进行输入验证时用错误通知替换异常
  8. 15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理
  9. [MEGA DEAL] Ultimate Java开发和认证指南(59%折扣)
  10. 使用Junit和Easytest进行数据驱动的测试