mysql二级缓存,mybatis的动态sql和二级缓存
mybatis的#{}和${}的区别就像是 PreparedStatement 和statement , 使用${}接收的参数还需用@Param注解修饰 , 推荐用#{}
动态SQL
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。
虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。
动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。
代码演示
select * from user
id = #{id}
select last_insert_id()
insert into user(name,password,address)values(#{name},#{pwd},#{address})
insert into user(name,password,address)values(#{name},#{pwd},#{address})
update user
name = #{name},
password = #{pwd},
address = #{address}
where id = #{id}
select *from user
and name=#{name}
and password=#{pwd}
and address=#{address}
select *from user
where id in
#{id}
select *from user
and name=#{name}
and password=#{pwd}
and address=#{address}
insert into user(name,password,address)
values
(#{user.name},#{user.pwd},#{user.address})
延迟查询
开启配置(1-1)
映射文件
select deptId,deptName from dept where deptId = #{deptId}
select
e.empId empId
,e.empName empName
,e.deptId deptId
from emp e
延迟查询
映射文件(一对多)
select empId,empName from emp where deptId = #{deptId}
select
d.deptId deptId
,d.deptName deptName
from dept d
测试
@Test
public void test1() throws IOException {
SqlSession session = Dbutil.getSqlSession();
List list = session.getMapper(IUserDao.class).query();
for (Dept dept : list) {
System.out.println(dept.getList());
}
session.close();
}
缓存开启二级缓存
select empId, empName,deptId from emp where empId = #{empId}
测试
@Test
public void test1() throws IOException {
SqlSession session = Dbutil.getSqlSession();
List list = session.getMapper(IUserDao.class).query(1);
for (Emp emp : list) {
System.out.println(emp);
}
session.close();
System.out.println("---------------");
session = Dbutil.getSqlSession();
list = session.getMapper(IUserDao.class).query(1);
for (Emp emp : list) {
System.out.println(emp);
}
session.close();
}
mysql二级缓存,mybatis的动态sql和二级缓存相关推荐
- MyBatis(三)——动态SQL
文章目录 1. 简介 2. 搭建环境 2.1 在MySQL中创建blog表 2.2 编写实体类 2.3 编写实体类对应Mapper接口 2.4 编写Mapper接口对应的Mapper.xml文件 2. ...
- 9、mybatis中动态sql的使用
对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...
- MyBatis 03 动态SQL
MyBatis 03 动态SQL 文章目录 MyBatis 03 动态SQL 一.学习目标 二.动态SQL if 标签2-1 if 标签2-2 where标签2-1 where 标签2-2 choos ...
- Mybatis学习-动态SQL
Mybatis学习-动态SQL Mybatis学习-动态SQL Mybatis学习-动态SQL 什么是动态SQL 搭建环境 IF 接口 Mapper 测试 trim (where, set) wher ...
- MyBatis的动态SQL详解
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwis ...
- Mybatis解析动态sql原理分析
前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...
- MyBatis中动态sql实现时间范围比较的查询
场景 前端传递两个时间参数,开始时间和结束时间,然后从数据库中筛选出某个时间属性在此范围的数据. Mybatis的动态sql的写法. 注: 博客: https://blog.csdn.net/bada ...
- MyBatis中动态sql的模糊搜索、foreach实现In集合的用法
场景 在使用MyBatis的动态sql时,常见的是传递一个ID的数组,查询记录的 ID在这个数组中的记录和模糊搜索这两种场景. 注: 博客: https://blog.csdn.net/badao_l ...
- mybatis的动态sql的一些记录
动态sql的作用:传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误.Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if ...
最新文章
- informix中if else使用_面试官:代码中出现大量的if/else,需要优化,你有什么好方案?...
- FastDFS 使用经验分享
- ORACLE初始化参数文件概述
- Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
- JAVA——TCP连接中Socket的正确关闭方式
- codeforces 909C. Python Indentation
- Apache Camel 3.1 –即将推出更多骆驼核心优化
- [Data Pump]expdp导出笔记
- 与你邂逅——软件工程
- docker制作容器(待更新)
- json-smart 使用示例(推荐fastjson)
- Java敏捷开发框架
- Qt视频播放器界面Demo
- 一个股票软件开发了三年的人如何画制iOS k线图
- 【新知实验室 腾讯云TRTC实时音视频体验】
- 算法基础-顺序统计量
- 电源管理IC的分类及智能变化
- JAVA架构演变过程
- 使用uni-app把h5网页封装成安卓app
- 德琪医药和上药控股达成合作;方达医药位于美国宾州新实验室投运;药明康德发布财报 | 医药健闻...