达梦数据查询编码_【技术在线】DM7与mybatis(三)——模糊查询

本文详细介绍了如何在DM7数据库中,利用mybatis进行模糊查询。通过XML映射文件配置,展示了使用'%'${key}%'、'%'||#{phone}||'%'、concat函数和bind元素来实现不同方式的模糊查询,同时强调了防止SQL注入的安全考虑。
摘要由CSDN通过智能技术生成

在《DM7与mybatis(一)——基本CRUD》中,我们介绍了dm7与mybatis的环境集成和基本配置,实现基本的CRUD操作。在《DM7与mybatis(二)——ID生成》中,我们介绍了利用dm7的序列和自增列实现ID自动生成的多种方式。

模糊查询是数据库记录检索的重要功能,通常利用sql语句中的操作符like、通配符%配合查询关键字来实现,本文将介绍如何利用mybatis实现对DM7的模糊查询。

环境准备参见《DM7与mybatis(一)——基本CRUD》,我们仍然基于表t_user和domain对象User来进行演示。为查看模糊查询效果,我们以test用户登录,执行下面脚本,向t_user表中插入几条数据。

-- 以test用户登录执行脚本

INSERTINTOt_userVALUES(2,'u002','12345','u002@sina.com');

INSERTINTOt_userVALUES(3,'u003','54321','abc@163.com');

INSERTINTOt_userVALUES(4,'佚名','0000','a@b.c');

INSERTINTOt_userVALUES(5,'admin','888888','admin@dameng.com');

commit;

注意最后要执行commit语句,因为DM7管理工具缺省没有打开自动提交,不执行commit语句,这些记录不会真正提交,就会出现演示过程中查询不到数据的现象。

一、使用’%${key}%’

在Mybatis中使用’%${key}%’表达式,可直接生成形如 like ‘%key%’ 的sql语句,从而实现对key值的模糊查询。下面我们在name字段上演示这个方法。

1、XML映射文件

在resources\mybatis-config.xml中,新增一个mapper配置,加载QueryMapper.xml。

……

……

新增org/dmstudy/mybatis/query/dao/QueryMapper.xml文件,其内容如下:

/p>

PUBLIC"-//mybatis.org//DTD Mapper  3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select

id,name,phone,email

from t_user

and name like'%${name}%'

注意namespace值对应为"org.dmstudy.mybatis.query.dao.QueryMapper"。

元素的作用是当test对应的表达式为真(此处"name != null"表示输入参数中name属性不为空)时,则输出元素内的内容。

元素的作用是用来生成where语句,当元素内无输出时,它什么也不会输出(保证不会出现孤立的where);当元素内有输出时,它会输出where以及内容,并且会自动去掉元素内容中最前面多余的and/or,防止语法错误。

parameterType="map"表示输入参数为一个java.util.Map对象,这样输入参数可以非常灵活,配合元素能够实现复杂的where条件。

2、Mapper接口

创建org.dmstudy.mybatis.query.dao.QueryMapper.java文件,内容如下:

packageorg.dmstudy.mybatis.query.dao;

importjava.util.List;

importjava.util.Map;

importorg.dmstudy.mybatis.domain.User;

publicinterfaceQueryMapper {

List query(Map param);

}

注意接口的全名org.dmstudy.mybatis.query.dao.QueryMapper、接口方法query与QueryMapper.xml中的namespace、语句映射节点id保持一致。

3、调用代码

packageorg.dmstudy.mybatis.query;

……

publicclassQueryApp {

……

publicvoidquery1() {

System.out.println("--- query1 ---");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值