Mybatis(Map)
Map
假设,我们的实体类,或者数据库中的表,字段或参数过多,我们应当考虑使用map
创建接口
//万能的mapper,我们不需要知道数据库里面有什么,是一个键值对的表现
//我们只需查询对应的字段
int addUser2(Map<String,Object> map);
写xml文档
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id,name,pwd)values (#{userid},#{userName},#{password})
</insert>
测试
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map= new HashMap<String, Object>();
map.put("userid",5);
map.put("userName",5);
map.put("password",123456);
mapper.addUser2(map);
sqlSession.close();
}
总结:
使用场景:类中的属性较多时;但你要修改其中的一个或少数几个时候用map,new对象要给每一个参数赋值,比较麻烦。
Map传递参数,直接在sql中取出key即可!【parameterType ="map"】
对象传递参数,直接在sql中取对象的属性即可。【parameterType="Object"】
只有一个基本类型参数的情况下,可以直接在sql中取到。
多个参数用Map,或者注解!
思考题:
模糊查询
编写接口
List<User> getUserLike(String name);
写xml文件标签属性
<select id="getUserLike" resultType="com.my.pojo.User">
select *from mybatis.user where name like #{value}
</select>
测试
public void getUserLike() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserLike("%李%");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
注意
1.java代码执行的时候,传递通配符% %
select *from mybatis.user where name like #{value}
List<User> userList = mapper.getUserLike("%李%");
2.#{}底层就是Preparestatement,先编译sql语句在取值
如果使用${}片段注入,才会存在sql注入,就是取值以后再去编译语句
select *from mybatis.user where name like "%"#{value}"%"
List<User> userList = mapper.getUserLike("李");
Mybatis(Map)的更多相关文章
- Java框架之Mybatis(二)
本文主要介绍 Mybatis(一)之后剩下的内容: 1 mybatis 中 log4j的配置 2 dao层的开发(使用mapper代理的方式) 3 mybatis的配置详解 4 输入输出映射对应的类型 ...
- Mybatis(下)
Mybatis(下) 一.MaBatis核心配置文件 Mybatis 中文文档 Mybatis 中文文档 1. properties 定义属性及读取属性文件,取的时候用 $(name) ,name 为 ...
- 浅析MyBatis(二):手写一个自己的MyBatis简单框架
在上一篇文章中,我们由一个快速案例剖析了 MyBatis 的整体架构与整体运行流程,在本篇文章中笔者会根据 MyBatis 的运行流程手写一个自定义 MyBatis 简单框架,在实践中加深对 MyBa ...
- 浅析MyBatis(三):聊一聊MyBatis的实用插件与自定义插件
在前面的文章中,笔者详细介绍了 MyBatis 框架的底层框架与运行流程,并且在理解运行流程的基础上手写了一个自己的 MyBatis 框架.看完前两篇文章后,相信读者对 MyBatis 的偏底层原理和 ...
- GO语言总结(4)——映射(Map)
上一篇博客介绍了Go语言的数组和切片——GO语言总结(3)——数组和切片,本篇博客介绍Go语言的映射(Map) 映射是一种内置的数据结构,用来保存键值对的无序集合. (1)映射的创建 make ( m ...
- Java-集合=第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); list.add(new A
第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得 ...
- Java-map-第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录
第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...
- mybatis(二)接口编程 、动态sql 、批量删除 、动态更新、连表查询
原理等不在赘述,这里主要通过代码展现. 在mybatis(一)基础上,新建一个dao包,并在里面编写接口,然后再在xml文件中引入接口路径,其他不变,在运用阶段将比原始方法更节约时间,因为不用再去手动 ...
- 第一题 (Map)利用Map,完成下面的功能:
从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年份,请参考本章附录. 附录 1.历届世界杯冠 ...
- springboot集成mybatis(二)
上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...
随机推荐
- flume组件以及通过命令监控大数据平台转态
实验一.Flume 组件安装配置 1.下载和解压 Flume 可 以 从 官 网 下 载 Flume 组 件 安 装 包 , 下 载 地 址 如 下 URL 链 接 所 示 https://archi ...
- ts中报错信息收集
1. 错误代码 参考:https://www.mmbyte.com/article/92849.html 1 state.localuserInfo = JSON.parse(localStorage ...
- vue—一个组件调用另一个组件的methods
这种方法不常用,项目中有个地方共享数据了,起初没用vuex做,后来有个地方不好解决,这两个组件没有什么关系 1.首先同一个vue实例来调用两个方法.所以可以建立一个中转站. 建立 util.js 中转 ...
- [C++基础入门] 2、数据类型
文章目录 2 数据类型 2.1 整型 2.2 sizeof关键字 2.3 实型(浮点型) 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 2 数据类 ...
- Redis缓存穿透、击穿、雪崩
文章目录 缓存穿透 缓存雪崩 缓存击穿 代码实战部分 缓存击穿实战代码封装 缓存穿透解决 Redis目前是非常流行的缓存数据库,缓存穿透.缓存击穿.缓存雪崩是常见的面试题,也是非常重要的问题. 缓存穿 ...
- 2021-12-13:字符串解码。给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k
2021-12-13:字符串解码.给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k ...
- Django4全栈进阶之路6 对各类数据库连接设置
Django 4 支持多种类型的数据库连接,包括 MySQL.PostgreSQL.SQLite.Oracle 等.对于不同类型的数据库,需要进行不同的设置.下面是 Django 4 对各类数据库连接 ...
- Pycharm的Available Packages为空问题
问题描述:可用软件包为空,Pycharm的Available Packages为空问题 打开软件包仓库设置画面 新建软件包仓库 输入软件包仓库 完成,可用软件包 Available Packages正 ...
- js 字符串格式数组转为数组对象
工作中经常会遇到将json字符串转换为json对象,但是将字符串格式数组转为数组对象的场景却不多 如: 其中label_exp: "["cap_pop","wk ...
- springboot+springsecurity+jwt+elementui图书管理系统
图书管理系统 一.springboot后台 1.mybatis-plus整合 1.1添加pom.xml <!--mp逆向工程 --> <dependency> < ...