MyBatis基础入门《六》Like模糊查询
MyBatis基础入门《六》Like模糊查询
描述:
未改动的文件,不再粘贴出来。项目中SQL的xml映射文件重要标签如下:
1 | mapper | namespace |
2 | cache | 配置给定命令空间的缓存 |
3 | cache-ref | 从其他命令空间引用缓存配置 |
4 | resultMap | 用来描述数据库结果集和对象的对应关系 |
5 | sql | 可以重用的SQL块,也可以被其他语句引用 |
6 | insert | 映射插入语句 |
7 | update | 映射更新语句 |
8 | delete | 映射删除语句 |
9 | select | 映射查询语句 |
一、mapper
1. namespace:命令空间
>>> namespace和子元素的id联合保证唯一,区别不同的mapper
>>> 绑定DAO接口
>>> namespace的命令必须跟某个接口同名
>>> 接口中的方法与映射文件中SQL语句id 一一对应
二、select
1. select是Mybatis中最常用的元素之一
2. select语句有很多属性可以详细配置每一条语句
>>> id
>> 命令空间中唯一的标识符
>> 接口中的方法与映射文件中的SQL语句id 一一对应
>>> parameterType
>> 传入SQL语句的参数类型
> 基础数据类型
> int、String、Date等
> 只能传入一个,通过#{参数名}即可获取传入的值
> 复杂数据类型
> java实体类、Map等
> 通过#{属性名} 或者 #{map的keyName} 即可获取传入值
>>> resultType
>> SQL语句返回值类型的完整类名或别名
---------------------------------------------------------------------------------------------------------------------------------
项目结构
ClientMapper.java
package com.charles.dao; import java.util.List;
import com.charles.entity.TblClient; public interface ClientMapper { /***
* 注意这个名字,必须要和ClientMapper.xml文件中的select标签id属性值一样。
* @return List<TblClient> 集合
*/
public List<TblClient> getClientAll(); /***
* 根据用户名称进行筛选数据
* @param name
* @return List<TblClient> 集合
*/
public List<TblClient> getClientByName(String name);
}
ClientMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.charles.dao.ClientMapper"> <resultMap type="com.charles.entity.TblClient" id="tblClientID">
<id property="cid" column="id" />
<result property="cname" column="client_name"/>
<result property="caddress" column="client_address"/>
<result property="cbirthday" column="client_birthday"/>
</resultMap> <!-- 查询数据库 -->
<select id="getCount" resultType="int">
SELECT COUNT(*) FROM tbl_client
</select> <!--
#########################################################################################################
实体类:TbClient.java 中的属性和数据库中表字段的属性不一样,所以需要进行手动配置映射关系。 如果实体类:TbClient.java中的属性和数据库中表字段的属性是一样的,那就不需要进行配置了,
执行使用 resultType="com.charles.entity.TbClient"即可,有点类似方式二,从数据库中查询出来的列名刚好就是
实体类TbClient.java中的属性名
#########################################################################################################
--> <!--
查询所有的用户. 方式1
使用此方式需要使用resultMap标签进行定义实体类属性和数据库中表字段之间的映射关系。
-->
<!-- <select id="getClientAll" resultMap="tblClientID"> -->
<!-- SELECT * FROM tbl_client -->
<!-- </select> --> <!-- 查询所有的用户. 方式2 -->
<!-- <select id="getClientAll" resultType="com.charles.entity.TblClient"> -->
<!-- SELECT -->
<!-- id as cid, -->
<!-- client_name as cname, -->
<!-- client_address as caddress, -->
<!-- client_birthday as cbirthday -->
<!-- FROM tbl_client -->
<!-- </select> --> <!--
查询所有的用户. 方式3
使用此方式需注意两点:
1. 需要在 mybatis-config.xml文件中,配置别名baitang
2. SQL 语句需要使用别名 对应 实体类TbClient.java 中的属性名
-->
<select id="getClientAll" resultType="baitang">
SELECT
id as cid,
client_name as cname,
client_address as caddress,
client_birthday as cbirthday
FROM tbl_client
</select> <!-- 根据用户的名称进行模糊查询数据 -->
<select id="getClientByName" parameterType="java.lang.String" resultType="baitang">
SELECT
id as cid,
client_name as cname,
client_address as caddress,
client_birthday as cbirthday
FROM tbl_client WHERE client_name like CONCAT('%',#{cname},'%')
</select> </mapper>
注意:
在书写like查询sql语句时,这样子的SQL语句【SELECT * FROM tbl_client WHERE client_name like '%#{cname}%'】是错误的,SQL语句需要进行修改,方式有两种。
方式1:使用CONCAT函数: like CONCAT('%',#{cname},'%')
方式2:使用$符号:like '%${value}%'
建议使用方式1
JunitMybatisSelect.java
package com.charles.junit; import java.io.IOException;
import java.io.InputStream;
import java.util.List; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test; import com.charles.dao.ClientMapper;
import com.charles.entity.TblClient;
import com.charles.util.MyBatisUtil; public class JunitMybatisSelect { @Test
public void junitSelect() {
SqlSession session = null;
try {
/** 1.获取mybatis-config.xml文件 **/
String resource = "mybatis/mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource); /** 2.创建SQLSessionFactory对象 **/
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); /** 3.创建SQLSession **/
session = sqlSessionFactory.openSession(); /** 4.输出SQLSession对象 **/
System.out.println(session);
String resoruce = "com.charles.dao.ClientMapper.getCount";
int count = session.selectOne(resoruce);
System.out.println(count); } catch (IOException e) {
e.printStackTrace();
} finally {
if(null != session) {
session.close();
}
}
} @Test
public void junitSelectLike() {
/** 1. 获取SQLSession **/
SqlSession session = MyBatisUtil.getSqlSession(); /** 2. 调度方法,从数据库中获取数据 **/
List<TblClient> list = session.getMapper(ClientMapper.class).getClientByName("a"); /** 3. 关闭SQLSession **/
MyBatisUtil.closeSqlSession(session); for(TblClient client : list ) {
System.out.println(client.getCid() + "\t" + client.getCname() + "\t" + client.getCaddress() + "\t" + client.getCbirthday());
}
}
}
如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9865581.html
MyBatis基础入门《六》Like模糊查询的更多相关文章
- MyBatis基础入门《八》查询参数传入Map
MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...
- MyBatis基础入门《七》查询参数传入对象
MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持 ...
- MyBatis基础入门《十六》缓存
MyBatis基础入门<十六>缓存 >> 一级缓存 >> 二级缓存 >> MyBatis的全局cache配置 >> 在Mapper XML文 ...
- MyBatis基础入门《四》接口方式.Select查询集合
MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...
- MyBatis基础入门《三》Select查询集合
MyBatis基础入门<三>Select查询集合 描述: 代码新增了一个MybatisUtil工具类,查询数据库返回集合的时候,接收数据的三种方式.由于代码会渐渐增多,未涉及改动过的文件不 ...
- MyBatis基础入门《二》Select查询
MyBatis基础入门<二>Select查询 使用MySQL数据库,创建表: SET NAMES utf8mb4; ; -- ---------------------------- -- ...
- Mybatis基础入门学习
Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...
- MyBatis基础入门《十九》动态SQL(set,trim)
MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...
- MyBatis基础入门《十七》动态SQL
MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > ...
随机推荐
- opencv模板匹配有趣的链接
https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matchi ...
- Linux NFS Root and PXE-Boot
Linux NFS Root and PXE-Boot November 6, 2006 Home· Linux Linux kernel hacking and test running on th ...
- beginner’s mistake
PHP Advanced and Object-Oriented Programming 3rd Edition Related to modularity is abstraction: class ...
- todo: 改变字体的动画
todo: 截取指定区域的图片, 改变字体的动画
- 如何使用Beyond Compare 对比差异文件【制作Patch(补丁包)文件】
场景:研发部的代码从SVN变更至GIt,通过Jenkins每天自动生成程序包. 如需要获取单独的程序包更新,而不是整个程序包覆盖更新,这时候就需要用到Beyond Compare 对比工具 操作步骤1 ...
- java 集合(四)HashSet 与 LinkedHashSet
查看源码: HashSet底层new 了HashMap 哈希表的结构: Demo: package cn.sasa.demo2; import java.util.HashSet; import ja ...
- tomcat安装apr优化
APR是apache的一个linux操作系统级优化库,可以在tomcat中使用操作系统级native调用大大提高并发处理效率 先安装前置依赖: yum install -y apr-devel ope ...
- 让对象支持with语句
一.with语句的好处 with语句的好处在于,它可以自动帮我们释放上下文,就比如文件句柄的操作, 如果你不使用with语句操作,你要先open一个文件句柄,使用完毕后要close这个文件句柄, 而使 ...
- MySQL模拟Oralce闪回操作
在前面的文章中我们介绍了MySQL误操作后数据恢复(update,delete忘加where条件),大概操作是通过sed命令把binlog中相关SQL误操作给逆向回来,然后导入SQL文件来恢复错误操作 ...
- finecms5采集接口下载
哪里有finecms采集接口可以下载?我们在用finecms建站时比较纠结的是要如何采集文章,finecms商城是有售卖采集插件,价格是50元,有些朋友感觉比较贵,不太愿意买,我们也是比较权衡了才很久 ...