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();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql查找表shoe table,mysql命令行常用命令

mysql服务的启动和停止net stop mysqlnet start mysql登陆mysql服务器mysql -u用户名 -p用户密码注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP增加新用户grant 权限 on 数据库.* to 用户名登录主机 identified by “密码”如&#…

java long bigdecimal,通过Java中的long创建BigDecimal值

让我们看看如何通过long创建BigDecimal值。在这里,我们将长值设置为BigDecimal构造函数的参数。BigDecimal val1 BigDecimal.valueOf(289L);BigDecimal val2 BigDecimal.valueOf(299L);我们还可以对其执行数学运算-val2 val2.subtract(val1);以下是一个例子-示例…

python 数据挖掘论文,Orange:一个基于 Python 的数据挖掘和机器学习平台

Orange 简介Orange 是一个开源的数据挖掘和机器学习软件。Orange 基于 Python 和 C/C 开发,提供了一系列的数据探索、可视化、预处理以及建模组件。Orange 拥有漂亮直观的交互式用户界面,非常适合新手进行探索性数据分析和可视化展示;同时高级…

php量表是什么心理量表,心理学中的“5大心理学测评量表”你知道多少?

原标题:心理学中的“5大心理学测评量表”你知道多少?心理学知识中涵盖了类型丰富的心理学测评量表,你知道其中的多少呢?1、《应对方式问卷》《应对方式问卷》由肖计划等人参照国内外应对研究的问卷内容以及有关应对理论&#xff0…

php获取表单内的值,PHP获取表单里各项值总结

表单提交的方式1、GET方式功能:获取get方式提交的数据格式:$_GET[“formelement”]2、POST方式功能:获取post方式提交的数据格式:$_POST[“formelement”]3、REQUEST方式功能:获取任意方式提交的数据格式:$…

php对象魔术方法,php学习之类与对象的魔术方法的使用

原标题:php学习之类与对象的魔术方法的使用魔术方法有哪些__construct:构造方法__destuct:析构方法__call:在对象中调用一个不可访问的方法时。__call()会被调用__callStatic:__get:调用不可访问的属性__se…

oracle 执行sql,Oracle动态执行SQL

方式1CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AScursor_name INTEGER;rows_processed INTEGER;BEGINcursor_name : dbms_sql.open_cursor;dbms_sql.parse(cursor_name, DELETE FROM emp WHERE sal > :x,dbms_sql);dbms_sql.bind_variable(cursor_name, :x, sal…

oracle 满足条件取第一行,sql – 如何只选择满足条件的第一行?

您可以使用分析查询:select *from (select p.*, v.*,row_number() over (partition by p.id order by v.userid) as rnfrom prmprofile pjoin user v on v.profile p.idwhere p.language 0and v.userid like %TEST%)where rn 1;内部查询获取所有数据(但使用*不理…

Linux怎么把目录设置群组,linux设置目录和文件使用权限

ext2fs文件系统中的目录及文件,可依实际需要来设置可读取、可写入与可执行等权限。以下我们就来了解文件和目录的权限设置。ext2fs文件系统中的目录及文件,可依实际需要来设置可读取、可写入与可执行等权限。以下我们就来了解文件和目录的权限设置&#…

linux异常关机内存,linux关机及问题解决

一般linux关机会用到的命令就是shutdown命令shutdown命令在执行的时候会自动去调用sync这个工具,这个工具的作用是把内存里面的东西写入硬盘。不过为了安全,一般我们在执行shutdown命令的时候都用去执行几次sync这个命令。shutdown -k noticesshutdown -…

linux查看redis内存,Linux查看redis占用内存的方法

redis-cliauth 密码info# Memoryused_memory:13490096 //数据占用了多少内存(字节)used_memory_human:12.87M //数据占用了多少内存(带单位的,可读性好)used_memory_rss:13490096 //redis占用了多少内存used_memory_peak:15301192 //占用内存的峰值(字节)used_memor…

linux子进程父进程例子,linux 子进程访问父进程

问题分析ECS Linux 系统下 Apache 的默认工作模式是 prefork MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。如果不做调整,访问量增大可能造成 A…

linux 查看进程的信号,Linux 进程信号查看与控制

Linux 进程信号查看与控制1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出通常是在终端的控制进程结束时通知同一 session 内的各个作业这时它们与控制终端不再关联?2) SIGINT 程序终止 (interrupt) 信号在用户键入 INTR 字符 (通常是 Ctrl-C) 时发出?3) SIGQUIT …

linux查看发起ddos攻击的ip,在Linux上使用netstat命令查证DDOS攻击的方法

导读DOS攻击或者DDOS攻击是试图让机器或者网络资源不可用的攻击。这种攻击的攻击目标网站或者服务通常是托管在高防服务器比如银行,信用卡支付网管,甚至根域名服务器。服务器出现缓慢的状况可能由很多事情导致,比如错误的配置,脚本…

linux还原windows,双系统如何删除Linux,恢复Windows从  MBR引导启动?

双系统如何删除Linux,恢复Windows从MBR引导启动?现在愿意尝试Linux的人越来越多了。通常,如果一台电脑里已经装有了Windows,再装Linux,安装时,Linux的grub引导程 序就会覆盖掉保存在MBR当中的原来的Windows…

linux ftp下载函数函数,FTP下载的函数

最近写的一个到指定FTP下载服务器上下载的函数,主要用到类有CInternetSession,CFtpConnection具体内容看代码吧,这个不能的!虽然很简单,不值得往外写,但我想收藏起来留着以后用也是很有意义的。/*********************…

linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...

使用linux的过程中,我们会熟悉各种命令,偶尔我们不禁会问,这些命令是怎么实现的,学习他们其实是学习linux高级系统编程很快捷的方法。这些命令的源码肯定是存放在相应的包里面,但是是哪些包呢?发行版的包管…

linux路由信息预览为空,route - 显示并设置Linux中静态路由表

补充说明route命令 用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中设置路由通常是为了解决以下…

linux maven自动构建,Centos7.3+Jenkins+Git+Maven 自动化构建部署项目

第一步 禁止 SELINUX 访问控制修改配置之前先备份(良好习惯)sudo cp /etc/selinux/config /etc/selinux/config.bak备份后,修改selinux配置sudo vi /etc/selinux/config将SELINUXenforcing改为SELINUXdisabled第二步 卸载系统自带的OpenJDK以及相关的java文件 安装J…

linux windows变色龙,体验开源变色龙SUSE Linux Enterprise Server 11

体验开源变色龙SUSE Linux Enterprise Server 11SUSE Linux Enterprise Server 11主要针对的是企业用户,SUSE产品分为SUSE Linux Enterprise Desktop(SLED)和SUSE Linux Enterprise Server(SLES)两个版本。笔者测试的版本为Server版本,主要面向SMB甚至是…