一: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 <typeAliases> <!-- 类型别名:type-pojo类的全路径,alias-别名名称(可随便写,推荐和类名一致) -->
<typeAlias type="cn.itcast.mybatis.pojo.User" alias="user" />
</typeAliases> 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 : 对应实体类属性名
作者:传智播客JavaEE培训学院 首发:http://java.itcast.cn
|