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. 如图
    MyBati 框架下的模糊查询
2. Mapper包(同一对象的映射文件与接口名需要保持一致)
  1. UserMapper.java 接口
    MyBati 框架下的模糊查询
  2. UserMapper.xml 映射文件
    MyBati 框架下的模糊查询
3. 测试类
  1. 一张图片放不下…MyBati 框架下的模糊查询

  2. 这是第二张…
    MyBati 框架下的模糊查询

  3. @After 和 @Before

    1. 是 AOP 思想(面向切面编程)
    2. 对会重复出现的部分,提取出来,抽取为 @After 和 @Before,减少代码量
4. 数据库测试数据
  1. 如图
    MyBati 框架下的模糊查询
5. 测试结果
  1. 当筛选条件为性别为 " 1 " 的对象
    MyBati 框架下的模糊查询MyBati 框架下的模糊查询
  2. 当筛选条件为姓名中包含 " 陈 " 字的对象
    MyBati 框架下的模糊查询MyBati 框架下的模糊查询
五、总结
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