MyBati 框架下的模糊查询

引言:之前有一篇博客,是JDBC方式下实现的模糊查询,地址:https://blog.csdn.net/qq_36654606/article/details/86631569
最近学习 MyBati 框架,也有关于模糊查询的部分,这里做一篇笔记,对两者做一些比较,加深印象,顺带复习模糊查询思路
Mybatis 中文版网站:http://www.mybatis.org/mybatis-3/zh/index.html

一、使用 MyBati 框架步骤
  1. 导入相关 Jar 包
    1. 使用 MyBati 框架本身需要的 jar 包(核心包 + 依赖包)
    2. 数据库驱动,Juint 等其他 jar 包
    3. 导入到根目录下lib文件
    4. 将这个 lib 文件添加到项目的Lib中
  2. 配置全局配置文件(可以从官方文件中找到标准模板)
    1. 固定文件头
    2. 配置 mybatis 环境信息(可以使用 db.properties 方式)
    3. 配置别名(路径写法:xx.xx.xx 而非 xx/xx/xx)
  3. 配置映射文件接口(类似Dao,仅写方法)
  4. 配置映射文件(类似DaoImp,写接口的实现)
    1. 固定文件头(可以从官方文件中找到标准模板)
    2. 空间名为映射文件接口局路径(路径写法:xx.xx.xx 而非 xx/xx/xx)
  5. 在全局配置文件中配置映射文件
    1. 配置映射文件地址(路径写法:xx.xx.xx 而非 xx/xx/xx)
    2. 要求被配置的映射文件和映射文件接口名字一致
  6. 编写测试类
    1. 读取全局配置文件路径
    2. 创建 SqlSessionFactory 会话工厂,通过新建的 SqlSessionFactoryBuilder().build() 方法
    3. 创建 SqlSession 对象,通过 SqlSessionFactory 会话工厂的 openSession() 方法
    4. 调用 SqlSession 对象中的增删改查方法,并传入映射文件中的SQL对象的 id,parameterType
    5. 根据需求处理映射文件中 SQL 返回的结果
二、模糊查询介绍
1. 前言
  1. 在一中,主要是关于如果使用 MyBati 框架进行数据库操作,需要的一些前提准备
  2. 在二中,主要是对 SQL 查询思路做分析
2. 关于模糊查询
  1. 正如字面意思,无法确定查询条件的查询称为模糊查询。
    即在 SQL 查询语句中,条件语句会随时变化。
  2. 因此考虑对 SQL 语句来拼接实现模糊查询效果。
    即首先定义初始 SQL 语句默认的查询对象,然后通过判断是否需要对基础 SQL 语句加入筛选查询的条件
  3. 难点:
    1. 如何拼接 SQL
    2. 如何判断是否有新增加的筛选条件
三、MyBati 框架下模糊查询写法
1. 针对二中模糊查询思想的实现
  1. 如何拼接 SQL:
    1. 简而言之,就是若干个 and x=x 的形式
    2. 提前写好可能出现的 and x=x,当需要这一部分时候取出拼接即可
    3. 这里通过 if 语法判断,如果需要这个部分,就执行拼接
  2. 如何判断是否增加了新的筛选条件:
    1. 以查询用户为例,基础查询为全部用户,筛选条件可以有姓名,性别,学号等
    2. 那么,在调用这个 SQL 查询的时候,总归需要传送过来这些参数才能实现拼接
    3. 那么,就就可能传入的参数进行判断,如果在 SQL 的传入类型参数中发现了这个参数,则拼接对应的 SQL 语句,否则对应的 SQL 语句则不生效(通过 If 语句判断是否传入了这个参数)
2. 代码组成部分
  1. 测试类
  2. Mapper.java 接口(MyBati 框架中用法,类似 J2EE 中 Dao 接口)
  3. Mapper.xml 映射文件(MyBati 框架中用法,类似 J2EE 中 DaoImp 实现类)
四、代码具体实现(使用IDEA)
1. 文件目录结构
  1. 如图
    在这里插入图片描述
2. Mapper包(同一对象的映射文件与接口名需要保持一致)
  1. UserMapper.java 接口
    在这里插入图片描述
  2. UserMapper.xml 映射文件
    在这里插入图片描述
3. 测试类
  1. 一张图片放不下…在这里插入图片描述

  2. 这是第二张…
    在这里插入图片描述

  3. @After 和 @Before

    1. 是 AOP 思想(面向切面编程)
    2. 对会重复出现的部分,提取出来,抽取为 @After 和 @Before,减少代码量
4. 数据库测试数据
  1. 如图
    在这里插入图片描述
5. 测试结果
  1. 当筛选条件为性别为 " 1 " 的对象
    在这里插入图片描述在这里插入图片描述
  2. 当筛选条件为姓名中包含 " 陈 " 字的对象
    在这里插入图片描述在这里插入图片描述
五、总结
1. 模糊查询思想
  1. 事先根据可能出现的筛选条件,写出待拼接的 SQL 语句,并使用 if 语句进行判定,等待拼接
  2. 对筛选条件进行判定,出现筛选条件则将对应的 if 语句,则将 if 语句内 SQL 取出,与基础的 SQL 进行拼接
2. Mybatis语法下的模糊查询
  1. 使用 MyBati 框架需要事先准备好一些 Jar 包,对应的配置文件等
  2. MyBati 框架下使用 Mapper.java ,Mapper.xml 而非 Dao,DaoImp(实际含义相同)
  3. MyBati 框架下对于 SQL 拼接可以使用 < where > 框架,比较方便
  4. 逻辑思想与 J2EE 下的查询思想类似,变化在于对 SQL 的拼接处理,使用 MyBati 框架后有较为方便的语法格式
六、代码分享
  1. 项目本身和sql文件可以在我的资源中找到,网址:https://download.csdn.net/download/qq_36654606/10960295

  2. 项目写时候使用的是工具:

    1. JDK 1.7
    2. Tomcat 7.0
    3. Navicat 10.0
    4. IDEA 2017
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值