mybatis 时间_44天 MyBatis 学习.

这两天开学了,事情有点多 所以鸽了两天.


第59次(mybatis)

学习主题:mybatis

学习目标:

1 掌握typeAliases的作用

2 掌握mybatis如何传递参数

3 掌握mybatis对事务的管理

4 掌握mybatis的crud

5 掌握接口绑定

对应作业

  1. typeAliases标签配置别名
    1. typeAliases标签有什么作用? 如何使用?

功能; 用于java 类型定义别名,方便配置文件中使用.

  1. 如何在MyBatis中为类型定义别名?
  1. 给User类型定义别名为u

<!-- typeAliases给类型起别名 -->

<typeAliases>

<!-- 给User类起别名为u -->

73485368e06212ddbc46a8ceebd6404e.png

<typeAlias type="com.bjsxt.pojo.User" alias="u" />

</typeAliases>

  1. 配置parameterType属性进行参数的传递
    1. 配置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类型.

  1. 通过parameterType属性实现参数传递是有哪些注意事项?

如果执行的是条件查询, 需要在调用方法时传参数进来,此时, 可以在select标签中通过parameterType属性指定参数的类型. 而在SQL语句中, 可以通过#{}的方式获取参数.

  1. MyBatis事务管理_工具类提取_实现新增操作
    1. MyBatis中如何管理事务?
  1. 事务是数据库操作的最小单元, 有ACID的特性. 应该保证一个事务的的SQL语句要么同时成功, 要么都不成功.
  2. MyBatis中配置了事务管理器, type属性设置为JDBC. 表示MyBatis采用和原生JDBC相同的事务管理机制.
  3. 在MyBatis执行的开始时, 将自动提交功能关闭了. 所以, 在执行DML操作时, 需要手动提交事务.
    1. 为什么增删改标签没有resultType属性?

注意, 由于 DML操作的返回值都是 int类型, 所以, 不需要定义resultType属性.

  1. MyBatis执行更新操作和删除操作
    1. 创建学生表, 字段有id, name, age, birthday, regTime(注册时间), loginTime(登录时间). 完成以下功能:

1. 实现学生的注册功能, 记录注册时间;

2. 完成登录功能, 登录时要求能修改登录时间;

  1. MyBatis接口绑定方案
    1. 什么是接口绑定?

MyBatis中, 提供了一套接口绑定方案. 程序员可以提供一个接口, 然后提供对应接口的一个 mapper.xml文件. MyBatis会自动将接口和xml文件进行绑定. 实际上就是 MyBatis会根据接口和对应的xml文件创建接口的实现类. 换言之, 就是可以得到接口类型的对象, 方便方法的调用.

  1. 接口绑定的实现需要满足那些条件?
  1. Xml 文件名要和接口名一致
  2. Namespace 属性必须为接口的全限定路径
  3. Id 属性必须和接口对应的方法名一致

第60次(mybatis)

学习主题:mybatis

学习目标:

1 掌握接口绑定多参数的使用

2 掌握mybatis动态sql

3 掌握mybatis缓存

对应作业

  1. 接口绑定解决多参数传递问题_@Param注解的使用
    1. MyBatis中#{}和${}的区别是什么?

${key} 是获取properties 中 key 对应的值.

#{index} 获取测试类中传递的参数.

  1. @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>

  1. MyBatis的动态SQL概述
    1. 什么是动态SQL? 有什么作用?

根据条件不同,SQL 也会随之动态的改变. MyBatis中.提供了一组标签用于实现动态SQL

  1. 动态SQL常用的标签有哪些?

<if> <where> <choose> <when> <otherwise> <set>

<trim> <bind> <foreach> <sql> <include>

  1. 动态SQL_if_where
    1. 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>

  1. where标签的作用是什么? 怎么使用?

用于管理where 子句 .有如下功能:

  1. 如果没有条件, 不会生产where 关键字
  2. 如果有条件,会自动添加 where 关键字
  3. 如果第一个条件中有 and , 去除之.
  4. 动态SQL_choose_when_otherwise_set
    1. choose/when/otherwise什么时候使用?

功能类似于switch...case... 只需要一个参数的时候使用

  1. set标签有什么作用?

用于维护update 语句中的set 子句,功能如下:

  1. 满足条件时,会自动添加set 关键字
  2. 会去除set 子句中多余的逗号
  3. 不满足条件式,不会生成set 关键字
  4. 动态SQL_trim_bind
    1. trim标签的作用是什么? 如何使用?

用于在前后添加或删除一些内容.

prefix, 在前面添加内容

prefixOverrides, 从前面去除内容

suffix, 向后面添加内容 `

suffixOverrides: 从后面删除内容

bind标签怎么使用? 有什么作用?

用于对数据进行再加工, 用于模糊查询

  1. 动态SQL_foreach_sql_include
    1. foreach标签的作用是什么? 如何使用?

用于在SQL语句中遍历集合参数, 在in查询中使用

collection: 待遍历的集合

open: 设置开始符号

item: 迭代变量

separator: 项目分隔符

close : 设置结束符号

  1. sql/include标签的作用是什么?

<sql>用于提取SQL语句, <include>用于引用SQL语句

  1. MyBatis的缓存机制
    1. 什么是缓存? 有什么好处?

缓存用于提高查询的效率.

MyBatis的缓存是使用SQL标签的ID作为缓存的唯一标识

的. 执行相同的标签可以使用缓存. 不同的标签不能使用

缓存.

MyBatis中有两种缓存机制.

  1. MyBatis的缓存有哪些分类? 分别怎么实现?

一级缓存

默认开启. 线程级别的缓存, SqlSession的缓存

在一个SqlSession生命周期中有效. SqlSession关闭,

二级缓存

进程级别的缓存, SqlSessionFactory的缓存

在一个SqlSessionFactory生命周期中有效. 可以在多个 SqlSession生命中期中共享.

默认关闭, 需要使用的时候, 要为某个命名空间开启二级

缓存(在mapper.xml中配置<cache>).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值