`
234390216
  • 浏览: 10232384 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462600
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775474
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398315
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395003
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679964
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530859
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183880
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467823
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151372
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68130
社区版块
存档分类
最新评论

mybatis模糊查询

阅读更多

今天弄了一下mybatis,发现网上关于mybatis模糊查询的很多人不知道,好像也没人说,所以我就把我关于mybatis模糊查询的用法写出来供有需要的人参考一下,希望对有需要的人能有所帮助!该查询是基于mysql数据库进行的,不同的数据库这个语法可能会有不同,仅作参考。

<select id="selectByName" parameterType="String" resultType="Student">
  select * from Student s where s.name like "%"#{name}"%";
 </select>

 

这里我再补充一下,如果你的student.xml文件里面针对这个查询的配置只用到了name的话,那么你直接给它传一个String类型的name是没有问题的,如果有多个条件的话你也可以给它传多个参数,当然你也可以给它传一个对象,而该对象所对应的属性就是你所要查的属性,像上面那样你就可以在你的程序里面这样写

@Override
	public List<Student> findAllByName(String name) {
		Student student = new Student();
		student.setName(name);
		List<Student> studentList = session.selectList("selectByName", student);
		return studentList;
	}

 

补充:最近用3.0.6版本测试了下,前面的用法还是可以的

 

 

 

我的另一篇讲Mybatis基础的博客http://haohaoxuexi.iteye.com/blog/1333271中也有关于模糊查询的多种用法,包括使用Mapper的、使用session的和Mapper中使用注解映射的

 

 

新版本的mybatis可以用如下方式实现模糊查询(基于Mybatis3.3.1验证)。

    <select id="fuzzyQuery" resultType="Blog" parameterType="java.lang.String">  
    	<!-- bind标签用于创建新的变量 -->
		<bind name="titleLike" value="'%'+_parameter+'%'"/>
        select * from t_blog where title like #{titleLike}  
    </select>

 关于bind标签的解释可参考http://elim.iteye.com/blog/1338557

 

 

 

 

分享到:
评论
24 楼 lcwen_13 2015-10-02  
感觉这篇文章是在误导人
23 楼 lwl550660646 2014-04-26  
MyBatis本来是用来支持多数据库的。不同的数据库,SQL语法肯定有差异。要不用MyBatis干嘛?
22 楼 dai_zhuo 2013-09-25  
columnName like concat('%',concat(#{columnName},'%'))
我每次这样写oracle mysql都是可以的。
21 楼 alongyijue 2013-09-13  
234390216 写道
xinming_me 写道
楼主,我用的是mybaits3.0.5 你的代码跑不通,报语法错误!

后来我用的这个就可以了:
SID in (select ID from T_USER where EMAIL like '%'||#{supplierID}||'%')


版本问题吧,你说的这个版本我没有测试过,我是以前用的3.0.2版本

这个应该是数据库的原因吧,我使用oracle数据库按照楼主的写法老是报“命令未正常结束”的错误。换成'%'||#{supplierID}||'%')
果断就行了
20 楼 sdm_seven 2013-06-08  
    <![CDATA[ bylaw_name like '%$bylaw_name$%' ]]>
19 楼 234390216 2013-06-05  
hellostory 写道
timer_yin 写道
我用的Mybatis 3.1 搜了挺多模糊查询怎么做都不对,原来是应该用双引号,楼主的才是对的


你这话就不对了,楼主的那种方法明显就是针对MySQL,要不你改为SQL Server试试,不报错才怪!



.

确实,我当初就是用Mysql测试的,可以通过,其他数据库没试过
18 楼 hellostory 2013-06-05  
timer_yin 写道
我用的Mybatis 3.1 搜了挺多模糊查询怎么做都不对,原来是应该用双引号,楼主的才是对的


你这话就不对了,楼主的那种方法明显就是针对MySQL,要不你改为SQL Server试试,不报错才怪!



.
17 楼 timer_yin 2012-02-27  
我用的Mybatis 3.1 搜了挺多模糊查询怎么做都不对,原来是应该用双引号,楼主的才是对的
16 楼 hellostory 2011-11-21  
List<Student> studentList = session.selectList("selectByName", student);  

为什么不直接用Mybatis的Mapper接口类,而用sqlSession,这样感觉还不如用ibatis2
15 楼 roiz 2011-11-13  
xinming_me 写道
楼主,我用的是mybaits3.0.5 你的代码跑不通,报语法错误!

后来我用的这个就可以了:
SID in (select ID from T_USER where EMAIL like '%'||#{supplierID}||'%')


这种方式通过
14 楼 234390216 2011-07-29  
xinming_me 写道
楼主,我用的是mybaits3.0.5 你的代码跑不通,报语法错误!

后来我用的这个就可以了:
SID in (select ID from T_USER where EMAIL like '%'||#{supplierID}||'%')


版本问题吧,你说的这个版本我没有测试过,我是以前用的3.0.2版本
13 楼 xinming_me 2011-07-29  
楼主,我用的是mybaits3.0.5 你的代码跑不通,报语法错误!

后来我用的这个就可以了:
SID in (select ID from T_USER where EMAIL like '%'||#{supplierID}||'%')
12 楼 softkid 2011-01-08  
mybatis 3.02经过哥的测试,楼主的可以
11 楼 234390216 2010-11-27  
java378656992 写道
不可能的

'%'||#{title}||'%'  这样还差不多!

sql里头不能用"" 双引号的

你先试一下吧,如果还不行的话,就把你的代码贴给我看一下吧
10 楼 java378656992 2010-11-27  
不可能的

'%'||#{title}||'%'  这样还差不多!

sql里头不能用"" 双引号的
9 楼 234390216 2010-11-27  
如果说还有按照我说的做的有报错的,就请把你们的代码贴出来,我看一下,谢谢!
8 楼 234390216 2010-11-27  
java378656992 写道
直接报错 ..  sql里头不会允许有 双引号的


这里传参数的时候可以是一个字符串,但是在内部必须是一个对象,类似于这样的:
@Override
	public List<Student> findAllByName(String name) {
		Student student = new Student();
		student.setName(name);
		List<Student> studentList = session.selectList("selectByName", student);
		return studentList;
	}
7 楼 234390216 2010-11-27  
java378656992 写道
直接报错 ..  sql里头不会允许有 双引号的

这个我是自己做过测试的,可以的,你看看你的代码是不是其他地方有问题呢
6 楼 java378656992 2010-11-26  
huangsky 写道
'%$value$%'
这样



有没有搞错,我们说的是mybatis3版本,没有$property$ 这种写法了
5 楼 java378656992 2010-11-26  
直接报错 ..  sql里头不会允许有 双引号的

相关推荐

    MyBatis模糊查询

    ### MyBatis模糊查询知识点详解 #### 一、MyBatis简介 MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以通过...

    Mybatis模糊查询和动态sql语句的用法

    Mybatis模糊查询和动态sql语句的用法 Mybatis是当前最流行的Java持久层框架之一,它提供了强大的数据库交互功能,包括模糊查询和动态sql语句的支持。本文将详细介绍Mybatis模糊查询和动态sql语句的用法。 一、模糊...

    mybatis 模糊查询的实现方法

    在MyBatis中,模糊查询是一种常见的查询方式,特别是在数据搜索功能中不可或缺。本文将详细介绍如何在MyBatis中实现模糊查询,以及`#`和`$`的区别。 首先,让我们来理解`#`和`$`的区别。这两个符号在MyBatis中用于...

    Mybatis自定义拦截器,对模糊查询传值的特殊字符统一进行转义处理的代码

    特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%*%)和半角模糊查询(%*或*%)

    详解MyBatis模糊查询LIKE的三种方式

    MyBatis模糊查询LIKE的三种方式详解 MyBatis是一种流行的持久层框架,它提供了多种方式来实现模糊查询。模糊查询是数据库SQL中使用频率很高的SQL语句,通过MyBatis可以更加灵活地进行模糊查询。本文将详解MyBatis...

    Mybatis模糊查询及自动映射实现详解

    Mybatis模糊查询及自动映射实现详解 Mybatis是一款优秀的持久层框架,它提供了强大的查询功能和自动映射机制,今天我们将深入探讨Mybatis模糊查询及自动映射实现的详细知识点。 一、Mybatis模糊查询 Mybatis提供...

    spring+Mybatis+SpringMVC资源整合(增删改查+模糊查询)精心制作,适合新手学习

    spring+Mybatis+SpringMVC资源整合(增删改查+模糊查询)精心制作,适合新手学习。采用myeclipse,mysql数据库,内附sql文件。 首页路径:http://localhost:8080/springmvc4/user/search

    MyBatis实现模糊查询的几种方式

    MyBatis实现模糊查询的几种方式 MyBatis是一款流行的基于Java的持久层框架,它提供了强大灵活的方式来与数据库进行交互。在实际开发中,我们经常需要实现模糊查询来满足业务需求。今天,我们将探讨MyBatis实现模糊...

    MyBatis中的模糊查询语句

    在MyBatis这个轻量级的持久层框架中,模糊查询是通过SQL语句来实现的,这使得我们可以灵活地构建复杂的查询逻辑。下面将详细介绍MyBatis中的模糊查询语句及其应用。 1. 模糊查询基本概念: 模糊查询通常使用SQL中的...

    Mybatis中的like模糊查询功能

    在Mybatis这个流行的持久层框架中,实现模糊查询功能,特别是`LIKE`操作,可以帮助开发者更灵活地处理数据过滤。本文将详细介绍Mybatis中使用`LIKE`进行模糊查询的几种方法。 1. **参数中直接加入`%`** 在Mybatis...

    Mybatis 中 Oracle 的拼接模糊查询及用法详解

    Mybatis 中 Oracle 的拼接模糊查询及用法详解 Mybatis 是一个基于 Java 的持久层框架,提供了强大的数据库交互能力,而 Oracle 则是业界最流行的关系数据库管理系统。本文将详细介绍 Mybatis 中 Oracle 的拼接模糊...

    mybatis分页及模糊查询功能实现

    二、MyBatis模糊查询实现 MyBatis提供了两种方式来实现模糊查询,下面我们将详细介绍每种方式。 1. 使用#{name}实现模糊查询 这种方式可以使用#{name}来实现模糊查询。在Mapper映射文件中,我们可以使用select...

    使用Mybatis框架的模糊查询

    本文将深入探讨如何在Mybatis框架中实现模糊查询,以帮助开发者更高效地进行数据检索。 首先,理解模糊查询的基本概念。在SQL中,模糊查询通常使用`LIKE`关键字来实现,允许我们在条件表达式中包含通配符,以匹配...

    java代码-使用java解决mybatis模糊匹配写法的源代码

    java代码-使用java解决mybatis模糊匹配写法的源代码 ——学习参考资料:仅用于个人学习使用!

    Mybatis自定义拦截器,对模糊查询传值的特殊字符(\,_,%)统一进行转义处理的代码

    代码包含: EscapeUtil.java:特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%...

    mybatis 父子级树形结构查询

    本文将深入探讨如何使用MyBatis进行父子级树形结构查询,避免繁琐的代码拼接。 首先,我们了解MyBatis的`collection`标签。在MyBatis的映射XML文件中,`&lt;collection&gt;`标签用于表示一对多的关系,它允许我们在一次...

    MyBatis的27道面试题

    MyBatis模糊查询like语句的写法相对简单,只需要在占位符中加入%即可。 在DAO接口的工作原理方面,MyBatis通过动态代理生成接口的代理实例。Dao接口里方法参数不同时,方法可以重载,MyBatis通过动态代理和反射技术...

    MyBatis-plus 模糊查询的使用

    MyBatis-plus提供了简单易用的模糊查询功能。 在MyBatis-plus中,模糊查询主要通过`QueryWrapper`类来实现。`QueryWrapper`是一个条件构造器,可以方便地构建复杂的查询条件。以下是如何使用`QueryWrapper`进行模糊...

Global site tag (gtag.js) - Google Analytics