前言

小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。

这个Mybatis基础学习系列是用来记录我学习Mybatis框架基础知识的全过程 (这个系列是参照B站狂神的Mybatis最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!)

之后我将尽量以一天一更的速度更新这个系列,还没有学习Mybatis3框架的小伙伴可以参照我的博客学习一下;当然学习过的小伙伴,也可以顺便跟我一起复习一下基础。最后,希望能够和大家一同进步吧!加油吧!少年们!

特别提醒:本篇博客是基于前两篇博客之上进行编写的,所以项目结构和数据库文件和实体类信息这里我就不再重新编写了,如果想要查看详细内容的话,这里我把前两篇博客的链接留一下,可以自行去查看:
第一篇博客:Mybatis基础学习之第一个Mybatis程序
第二篇博客:Mybatis基础学习之CRUD增删改查

今天我们来到了Mybatis基础学习的第四站:万能Map和模糊查询,主要内容就是学习Mybatis框架中的万能Map来解决一些参数过多的问题,以及实现基本的模糊查询功能。废话不多说,让我们开始今天的学习内容吧。

4.6 万能Map

  • 为什么要使用Map呢?

假设创建的实体类,或者数据库中的表,字段参数过多,如果将参数全部列出比较麻烦,这时应该考虑使用万能的Map!


接下来,就让我们一起来看看,如何使用万能的Map来解决具体的问题吧!

4.6.1 使用Map增加用户

首先是使用万能的Map来插入用户信息

1.编写UserMapper接口

public interface UserMapper {// 插入用户信息 (常规形式的插入数据)int addUser(User user);// 使用万能的Map (与上面的addUser作用大致相同)int addUser2(Map<String,Object> map);}

2.编写UserMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper"><!-- 插入用户信息: 传递map中的key--><insert id="addUser" parameterType="map">   insert into mybatis.user(id, pwd) values (#{userId},#{passWord});</insert></mapper>

3.编写UserDaoTest测试类

public class UserDaoTest {@Testpublic void addUser2() {// 获取sqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();// 获取Mapper接口对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);// 获取Map对象Map<String, Object> map = new HashMap<String, Object>();// 通过map的键值对设置参数map.put("userId",4);map.put("userName","林迈克");map.put("passWord","lpk123456");// 调用addUser2方法新增用户mapper.addUser2(map);// 关闭sqlSessionsqlSession.close();}}

4.测试结果

  • 查看控制台输出

  • 查看数据库信息

结果:插入用户信息成功!

4.6.2 使用Map查询用户

当然,也使用万能的Map来查询用户信息

1.编写UserMapper接口

public interface UserMapper // 根据Id查询用户User getUserById(int id);// 使用万能的Map:与上面的getUserById作用相同User getUserById2(Map<String,Object> map);}

2.编写UserMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper"><!-- 通过id查询用户信息: 传递map中的key --><select id="getUserById2" parameterType="map" resultType="com.kuang.pojo.User">select * from mybatis.user where id = #{helloId} and name = #{name};</select></mapper>

3.编写UserDaoTest测试类

public class UserDaoTest {@Testpublic void getUserById2() {// 获取sqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();// 获取Mapper接口对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);// 获取Map对象Map<String, Object> map = new HashMap<String, Object>();// 通过键值对设置参数map.put("helloId",2);// 调用getUserById2方法查询指定用户mapper.getUserById2(map);// 打印map的值System.out.println(map);// 关闭sqlSessionsqlSession.close();}}

4.测试结果

4.6.3 Map和对象传递参数区别

1.Map传递参数

  • 直接在sql中取出key即可:这里的parameterType=“map”
<!--传递map中的key-->
<select id="getUserById2" parameterType="map" resultType="com.kuang.pojo.User">select * from mybatis.user where id = #{helloId} and name = #{name};
</select>

2.对象传递参数

直接在sql中取对象即可:这里的parameterType=“Object”

<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">select * from mybatis.user where id = #{id}
</select>

3.不设置参数类型

  • 只有一个基本类型参数的情况下,可以直接在sql中取到!
<!--不设置参数类型 -->
<select id="getUserById" resultType="com.kuang.pojo.User">select * from mybatis.user where id = #{id}
</select>

特别提醒:多个参数可以使用万能的Map或者注解!


了解了万能的Map如何使用后,接下来我们再学习一下如何实现模糊查询

4.7 模糊查询

4.7.1 Java代码中使用通配符

Java代码执行的时候,传递通配符% %

1. 编写接口方法

public interface UserMapper {// 模糊查询用户List<User> getUserLike(String value);}

2. 编写xml配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper"><!-- 使用模糊查询,注意要设置返回值类型 --><select id="getUserLike" resultType="com.kuang.pojo.User">select * from mybatis.user where name like #{value}</select></mapper>

3. 编写单元测试方法

public class UserDaoTest {@Testpublic void getUserLike() {// 获得sqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();// 获取Mapper接口对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);// 调用getUserLike方法进行模糊查询:传递通配符% %List<User> userList = mapper.getUserLike("%林%");// 遍历User列表数据for (User user : userList) {System.out.println(user);}// 关闭sqlSessionsqlSession.close();}}

4. 测试结果


结果:成功查询到用户名中包含“林:的用户信息!

4.7.2 SQL语句中使用通配符

在SQL拼接中使用通配符"%"#{ }"%"

1. 编写UserMapper接口

public interface UserMapper {// 模糊查询用户List<User> getUserLike(String value);}

2. 编写UserMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper"><!-- select * from mybatis.user where id = ?SQL注入:select * from mybatis.user where id = 1 or 1=1 --><!-- 模糊查询:"%"#{value}"%"相当于拼接字符串,防止SQL注入 --><select id="getUserLike" resultType="com.kuang.pojo.User">select * from mybatis.user where name like "%"#{value}"%"    </select></mapper>

3. 编写UserDaoTest测试类

public class UserDaoTest {      @Testpublic void getUserLike() {// 获得sqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();// 获取Mapper接口对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);// 调用getUserLike方法进行模糊查询:传递通配符% %List<User> userList = mapper.getUserLike("%林%");// 遍历User列表数据for (User user : userList) {System.out.println(user);}// 关闭sqlSessionsqlSession.close();}}

4. 测试结果


结果:成功查询到用户名中包含“林:的用户信息!


好了,今天的有关万能的Map和模糊查询的学习就到此结束啦,欢迎小伙伴们积极学习和讨论,喜欢的可以给蜗牛君点个关注,顺便来个一键三连,我们下期见,拜拜啦!


参考视频链接:https://www.bilibili.com/video/BV1NE411Q7Nx?spm_id_from=333.999.0.0(【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂)

Mybatis基础学习之万能的Map和模糊查询相关推荐

  1. MyBatis中万能的Map和模糊查询

    文章目录 1.假设实体类或者数据库中的表的字段过多,应当考虑使用Map 2.使用Map,可以不用把表的属性全写出来,只要写需要的属性 3.模糊查询 Map传递参数,直接在sql中取出key即可 对象传 ...

  2. Mybatis基础学习之一级缓存和二级缓存的简单使用

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个Mybatis ...

  3. MyBatis基础学习知识点2

    本文衔接MyBatis基础学习知识点1,继续对以下两个问题进行探讨 1.dao配置文件主要是用来干什么的?如何进行配置? 2.使用测试方法测试程序运行是如何实现的?每条语句起什么作用? 目录 dao配 ...

  4. MyBatis:万能Map和模糊查询(狂神)

    当写修改的方法时,里面的参数是个User对象,那么在UserMappwe.xml中values中要和对象的属性名相对应,并且需要创建对象,输入它的多个属性值需要更改的进行修改,比较麻烦,就可以考虑使用 ...

  5. key map 模糊查找_使用Map和模糊查询

    Map和模糊查询 在某些时候我们只需要给MyBatis传递几个参数而不是一个完整的对象,如仅仅update表中的两三个属性.此时parameterType设置为一个pojo显然不合适.可以考虑使用Ma ...

  6. mybatis基础学习小记

    mybatis基础应用学习记录 1.创建项目 创建一个maven项目 2. 配置mybatis xml配置文件 3.相关代码 4.使用mybatis 5.到此mybatis入门使用就算完结了,后续还得 ...

  7. mybatis基础学习4-插件生成器(根据数据库的表生成文件)

    1:安装(根据数据库的表生成文件) 2:在所建项目单击右键输入mybatis如下图 *建项目文件时不用建包和类,插件可以根据数据表自动生成,在配置文件(generatorConfig.xml)里写即可 ...

  8. MyBatis基础学习知识点3

    目录 动态sql语句 if标签 where标签 foreach标签 sql标签 动态sql语句 if标签 在主SQL语句之间使用,用于sql语句的拼接 例如: <select id=" ...

  9. mybatis基础学习3---特殊sql语句(备忘)

    1: 2:  3:resultMap的用法 转载于:https://www.cnblogs.com/kaiwen/p/6486283.html

最新文章

  1. WorkFlow设计篇Step.2—传参的用法-订单金额的处理(续)-WF4.0
  2. 完整计算机组成系统,计算机组成原理与完整系统结构.doc
  3. android 调用java webservice_android通过ksoap2调用java写的CXF 的webservice
  4. 11、mybatis返回List
  5. rake -T 列出所有RAKE 命令.
  6. 09Oracle Database 数据表数据插入,更新,删除
  7. 问题 1462: [蓝桥杯][基础练习VIP]Huffuman树
  8. ZDOO全协同管理系统 v6.9
  9. 网申倒计时4天 | DJI大疆秋招独家笔试攻略
  10. Linux中的报错命令,Linux学习教程-Linux下命令的一些异常情况
  11. python基础编程语法-1.Python基础语法
  12. CAd常用的系统变量
  13. linux实训4文件系统管理,实训项目4 文件系统管理.docx
  14. vue实现坐标拾取器功能demo
  15. Linux2--修改root密码,文件操作
  16. Python实现检测文件的MD5值来查找重复文件
  17. 用C语言对单词首字母进行排序,c语言单词排序
  18. MTK 智能机平台系统文件夹文件详解
  19. 阿奇霉素联合甲泼尼龙治疗30例小儿难治性支原体肺炎的效果及安全性探讨
  20. Windows 应急响应辅助笔记

热门文章

  1. 为什么男人总是欺负你?
  2. 关于XP、2k、98的互访的问题的总结
  3. word如何弄成两竖列_word分栏后成了竖行
  4. 移动开发唱衰,iOS开发者如何涅槃重生?
  5. 制作u盘版的kail linux 系统,即插即用,用于破解邻居妹子家的wifi
  6. 帝国cms如何域名html的专题,帝国cms 二级域名绑定栏目的最完美的解决方案
  7. idea创建SpringBoot工程
  8. Rust语言正在兴起,Java、Python、C的末日来临?
  9. “地图易“制图工具——零代码制作漂亮业务地图
  10. creo2.0+VS2010采用protoolkit二次开发环境配置(64位win7)