更新时间:2018年12月13日14时49分 来源:传智播客 浏览次数:
一:MyBatis整体架构
1.配置文件
全局配置文件:mybatis-config.xml作用:配置数据源,引入映射文件
映射文件:XxMapper.xml 作用:配置sql语句、参数、结果集封装类型等
2.SqlSessionFactory作用:获取SqlSession
通过new SqlSessionFactoryBuilder().build(inputStream)来构建,inputStream:读取配置文件的IO流
3.SqlSession作用:执行CRUD操作
4.Executor
执行器,SqlSession通过调用它来完成具体的CRUD它是一个接口,提供了两种实现:缓存的实现、数据库的实现
5.Mapped Statement
在映射文件里面配置,包含3部分内容:
具体的sql,sql执行所需的参数类型,sql执行结果的封装类型
参数类型和结果集封装类型包括3种:
HashMap,基本数据类型,pojo
6.xxxMapper.xml映射文件
名称空间必须改成UserMapper接口的全路径,StatementId必须和接口方法名一致,结果集的封装类型已经和方法的返回类型一致
7.mybatisconfig.xml配置文件
讲究严格的顺序,具体顺序遵循文档的顺序:
8.settings参数:
9.类型别名
1.typeAlias
2.package
3.typeHandlers
4.environments
1.default
2.build
5.Mappers 映射
1.resource
2.file
3.class
4.package
6.CRUD标签
1.insert :
useGeneratedKeys : 开启主键的回显 , true & false
keyColumn : 主键的列名
keyProperty : 主键对应的属性名
2.update
3.select
4.delete
7.parameterType 参数
parameterType有三种类型的输入参数:
1.基本数据类型
2.hashMap
3.pojo包装类
hashMap类型通过#{key}或者${key},复杂类型通过${key.属性名}或者#{key.属性名}
接收参数两种方式:
1.#{} : 预编译
2.${} : 非预编译 sql拼接,不能防止sql注入
${}用法:
使用${} 去接收参数信息,在一个参数时,默认情况下必须使用${value}获取参数值,
#{}用法:
#{} 只是表示占位,与参数的名字无关,如果只有一个参数,可以使用任意参数名接收参数值,会自动对应。
推荐使用@Param注解指定参数名:
#{参数名},${参数名}
#{}接收多个参数:
1.默认规则获取参数{0,1,param1,param2}
2.使用@Param注解指定参数名
如果没指定参数名,用#{0},#{1}或者#{param1},#{param2}
注意:
1.单个参数时,#{}与参数名无关的。
2.多个参数时,#{} ${}与参数名(@Param)有关。
什么时候需要加@Param注解?什么时候不加?
单个参数不加,多个参数加
终极解决方案:都加。
8.ResultMap 自定义映射
type : 结果集的封装类型 , id : 唯一标识 , autoMapping : 开启自动匹配,如果开启了驼峰匹配,就以驼峰匹配形式
id : 指定主键映射 ,不要省略,提高性能
result : 其他非主键字段 , column : 表中的字段名 , property : 对应实体类属性名