mysql二级缓存,mybatis的动态sql和二级缓存
mybatis的#{}和${}的區(qū)別就像是 PreparedStatement 和statement , 使用${}接收的參數(shù)還需用@Param注解修飾 , 推薦用#{}
動態(tài)SQL
MyBatis 的強大特性之一便是它的動態(tài) SQL。如果你有使用 JDBC 或其它類似框架的經(jīng)驗,你就能體會到根據(jù)不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài) SQL 這一特性可以徹底擺脫這種痛苦。
雖然在以前使用動態(tài) SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射語句中的強大的動態(tài) SQL 語言得以改進這種情形。
動態(tài) SQL 元素和 JSTL 或基于類似 XML 的文本處理器相似。在 MyBatis 之前的版本中,有很多元素需要花時間了解。MyBatis 3 大大精簡了元素種類,現(xiàn)在只需學習原來一半的元素便可。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();
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的mysql二级缓存,mybatis的动态sql和二级缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 查看进程的信号,Linux
- 下一篇: c语言函数大全doc,c语言函数大全.d