mybatis-config.xml的配置内容和顺序如下(顺序不能乱):
的作用
用于给 java 类型定义别名, 方便在配置文件中使用.
parameterTyped
- 如果执行的是条件查询, 需要在调用方法时传参数进来, 此
- 时, 可以在select标签中通过parameterType属性指定参数
- 的类型. 而在 SQL 语句中, 可以通过#{}的方式获取参数.
MyBatis中如何管理事务
- MyBatis 中配置了事务管理器, type 属性设置为 JDBC.
- 表示 MyBatis 采用和原生 JDBC 相同的事务管理机制.
- 在 MyBatis 执行的开始时, 将自动提交功能关闭了. 所以,在执行 DML 操作时, 需要手动提交事务.
增删改标签没有resultType属性
由于DML 操作的返回值都是 int 类型, 所以, 不需要定义resultType 属性.
MyBatis接口绑定方案
MyBatis 会自动将接口和 xml 文件进行绑定. 根据接口和对应的 xml 文件创建接口的实现类.就是可以得到接口类型的对象, 方便方法的调用.
接口绑定的实现需要满足四个一致:
- namespace与接口的全限定类名保存一致
- statement的id 与接口的方法名保存一致
- resultType的类型与接口中形参的类型保存一致
- resultType的类型与接口中当前当前方法所映射的对象类型保存一致
@Param注解
- 参数中使用@Param 注解为参数取别名用于sql语句中
MyBatis中#{}和${}的区别
- #{}表示占位符?,#{}接收简单类型的参数时,里面的名称可以任意
- ${}表示拼接符,${}接收简单类型的参数时,里面的名称必须是value
- ${}里面的值会原样输出,不加解析(如果该参数值是字符串,有不会添加引号)
- ${}存在sql注入的风险,但是有些场景下必须使用,比如排序后面会动态传入排序的列名
MyBatis的动态SQL概述
- 根据条件的不同, SQL 语句也会随之动态的改变
- 常用的动态标签有:
- <if>
- 用于进行条件判断, test 属性用于指定判断条件.
- <where>
- 用于管理 where 子句. 有如下功能:
- 如果没有条件, 不会生成 where 关键字
- 如果有条件, 会自动添加 where 关键字
- 如果第一个条件中有 and, 去除之
- <set>
- 用于维护 update 语句中的 set 子句. 功能如下:
- 满足条件时, 会自动添加 set 关键字
- 会去除 set 子句中多余的逗号
- 不满足条件时, 不会生成 set 关键字
- <choose><when><otherwise>
- 功能类似于 switch...case...
- <trim>
用于在前后添加或删除一些内容
- prefix, 在前面添加内容
- prefixOverrides, 从前面去除内容
- suffix, 向后面添加内容
- suffixOverrides, 从后面去除内容
- <bind>
- 用于对数据进行再加工, 用于模糊查询
- <foreach>
- 用于在 SQL 语句中遍历集合参数, 在 in 查询中使用,其中各个参数含义
- collection: 待遍历的集合
- open: 设置开始符号
- item: 迭代变量
- separator: 项目分隔符
- close: 设置结束符号
- <sql>
- 用于提取 SQL 语句
- <include>
- 用于引用 SQL 语句
mybatis-config.xml的配置内容和顺序如下(顺序不能乱):
- properties(属性)用于配置属性信息
- settings(全局参数设置)用于配置MyBatis的运行时方式
- typeAliases(类型别名)配置类型别名,可以在xml中用别名取代全限定名
- typeHandlers(类型处理器)配置类型处理器
- objectFactory(对象工厂)
- plugins(插件)配置拦截器,用于拦截sql语句的执行
- environments(环境信息集合)
- environment(单个环境信息)配置数据源信息、连接池、事务属性等
- transactionManager(事务)
- dataSource(数据源)
- mappers(映射器)配置SQL映射文件