这两天开学了,事情有点多 所以鸽了两天.
第59次(mybatis)
学习主题:mybatis
学习目标:
1 掌握typeAliases的作用
2 掌握mybatis如何传递参数
3 掌握mybatis对事务的管理
4 掌握mybatis的crud
5 掌握接口绑定
对应作业
- typeAliases标签配置别名
- typeAliases标签有什么作用? 如何使用?
功能; 用于java 类型定义别名,方便配置文件中使用.
- 如何在MyBatis中为类型定义别名?
- 给User类型定义别名为u
<!-- typeAliases给类型起别名 -->
<typeAliases>
<!-- 给User类起别名为u -->
![73485368e06212ddbc46a8ceebd6404e.png](https://i-blog.csdnimg.cn/blog_migrate/a0c5ae582269f7ed111ee797408a631c.jpeg)
<typeAlias type="com.bjsxt.pojo.User" alias="u" />
</typeAliases>
- 配置parameterType属性进行参数的传递
- 配置parameterType属性进行参数的传递
<!-- parameterType, 参数类型, 用于参数的传递 -->
<select id="selById" resultType="user" parameterType="int">
<!--
#{}用于获取参数 index, 索引, 从0开始 param+数字, param1, param2
-->
select * from t_user where id=#{param1}
</select>
Int 代表 Integer JDK1.5以后支持自动拆箱.
_int 代表int类型.
- 通过parameterType属性实现参数传递是有哪些注意事项?
如果执行的是条件查询, 需要在调用方法时传参数进来,此时, 可以在select标签中通过parameterType属性指定参数的类型. 而在SQL语句中, 可以通过#{}的方式获取参数.
- MyBatis事务管理_工具类提取_实现新增操作
- MyBatis中如何管理事务?
- 事务是数据库操作的最小单元, 有ACID的特性. 应该保证一个事务的的SQL语句要么同时成功, 要么都不成功.
- MyBatis中配置了事务管理器, type属性设置为JDBC. 表示MyBatis采用和原生JDBC相同的事务管理机制.
- 在MyBatis执行的开始时, 将自动提交功能关闭了. 所以, 在执行DML操作时, 需要手动提交事务.
- 为什么增删改标签没有resultType属性?
注意, 由于 DML操作的返回值都是 int类型, 所以, 不需要定义resultType属性.
- MyBatis执行更新操作和删除操作
- 创建学生表, 字段有id, name, age, birthday, regTime(注册时间), loginTime(登录时间). 完成以下功能:
1. 实现学生的注册功能, 记录注册时间;
2. 完成登录功能, 登录时要求能修改登录时间;
- MyBatis接口绑定方案
- 什么是接口绑定?
MyBatis中, 提供了一套接口绑定方案. 程序员可以提供一个接口, 然后提供对应接口的一个 mapper.xml文件. MyBatis会自动将接口和xml文件进行绑定. 实际上就是 MyBatis会根据接口和对应的xml文件创建接口的实现类. 换言之, 就是可以得到接口类型的对象, 方便方法的调用.
- 接口绑定的实现需要满足那些条件?
- Xml 文件名要和接口名一致
- Namespace 属性必须为接口的全限定路径
- Id 属性必须和接口对应的方法名一致
第60次(mybatis)
学习主题:mybatis
学习目标:
1 掌握接口绑定多参数的使用
2 掌握mybatis动态sql
3 掌握mybatis缓存
对应作业
- 接口绑定解决多参数传递问题_@Param注解的使用
- MyBatis中#{}和${}的区别是什么?
${key} 是获取properties 中 key 对应的值.
#{index} 获取测试类中传递的参数.
- @Param注解有什么作用?
接口中定义方法, 参数中使用@Param注解设定参数名用于在SQL语句中使用.
User selByUP(@Param("username") String username, @Param("password")
String password);
映射文件中提供对应的标签. 此时, SQL语句中获取方式
有两种, 通过#{参数名称}或#{param+数字}的方式.
<select id="selByUP" resultType="user"> select * from t_user where username=#{username} and password=#{password}
</select>
- MyBatis的动态SQL概述
- 什么是动态SQL? 有什么作用?
根据条件不同,SQL 也会随之动态的改变. MyBatis中.提供了一组标签用于实现动态SQL
- 动态SQL常用的标签有哪些?
<if> <where> <choose> <when> <otherwise> <set>
<trim> <bind> <foreach> <sql> <include>
- 动态SQL_if_where
- if标签的作用是什么? 怎么使用?
用于进行条件判断, test属性用于指定判断条件. 为了拼接条件, 在SQL语句后强行添加1=1的恒成立条件
<select id="sel" resultType="user">
select * from t_user where 1=1
<if test="username != null and username != ''">
and username=#{username}
</if>
<if test="password != null and password != ''">
and password=#{password}
</if>
</select>
- where标签的作用是什么? 怎么使用?
用于管理where 子句 .有如下功能:
- 如果没有条件, 不会生产where 关键字
- 如果有条件,会自动添加 where 关键字
- 如果第一个条件中有 and , 去除之.
- 动态SQL_choose_when_otherwise_set
- choose/when/otherwise什么时候使用?
功能类似于switch...case... 只需要一个参数的时候使用
- set标签有什么作用?
用于维护update 语句中的set 子句,功能如下:
- 满足条件时,会自动添加set 关键字
- 会去除set 子句中多余的逗号
- 不满足条件式,不会生成set 关键字
- 动态SQL_trim_bind
- trim标签的作用是什么? 如何使用?
用于在前后添加或删除一些内容.
prefix, 在前面添加内容
prefixOverrides, 从前面去除内容
suffix, 向后面添加内容 `
suffixOverrides: 从后面删除内容
bind标签怎么使用? 有什么作用?
用于对数据进行再加工, 用于模糊查询
- 动态SQL_foreach_sql_include
- foreach标签的作用是什么? 如何使用?
用于在SQL语句中遍历集合参数, 在in查询中使用
collection: 待遍历的集合
open: 设置开始符号
item: 迭代变量
separator: 项目分隔符
close : 设置结束符号
- sql/include标签的作用是什么?
<sql>用于提取SQL语句, <include>用于引用SQL语句
- MyBatis的缓存机制
- 什么是缓存? 有什么好处?
缓存用于提高查询的效率.
MyBatis的缓存是使用SQL标签的ID作为缓存的唯一标识
的. 执行相同的标签可以使用缓存. 不同的标签不能使用
缓存.
MyBatis中有两种缓存机制.
- MyBatis的缓存有哪些分类? 分别怎么实现?
一级缓存
默认开启. 线程级别的缓存, SqlSession的缓存
在一个SqlSession生命周期中有效. SqlSession关闭,
二级缓存
进程级别的缓存, SqlSessionFactory的缓存
在一个SqlSessionFactory生命周期中有效. 可以在多个 SqlSession生命中期中共享.
默认关闭, 需要使用的时候, 要为某个命名空间开启二级
缓存(在mapper.xml中配置<cache>).