核心配置文件
* properties:用来加载外部资源文件
* settings:延迟加载
* typeAliases(类型别名)
* typeHandlers(类型处理器)
* objectFactory(对象工厂)
* plugins(插件)
* environments(环境集合属性对象)
* environment(环境子属性对象)
* transactionManager(事务管理)
* dataSource(数据源)
* mappers:加载映射配置文件和注解接口的全限定名
映射配置文件
* mapper namespace: 命名空间,作用 分类管理sql语句,确定唯一的sql语句:namespace + "." + id,mapper代理开发dao时,namespace必须是接口的全限定名称
*
* cache标签:二级缓存
* sql标签:抽取成公共的sql 语句,可以重复使用
*
* include属性:引用抽取公共的sql语句
*
* refid属性:根据指向抽取公共的sql语句的id完成引用
* select标签 :编辑查询数据库的sql语句
* update标签 :编辑修改数据库的sql语句
* insert标签 :编辑添加数据库的sql语句
* delete标签 :编辑删除数据库的sql语句
*
* id属性:唯一的标识,要跟接口中的方法名一致
* parameterType属性:传递的参数类型,要跟接口中的方法传递的参数类型一致
* resultType属性:返回的结果参数类型,要跟接口中的方法返回的结果类型一致
*
* 如果返回的结果是一个list,resultType中的类型是集合中的泛型 List<T>
* resultMap属性:实现多条查询返回结果的类型,可以完成数据库字段与封装类字段不一致的映射关系,可以完成复杂的映射关系:一对一、一对多、多对多
*
* uresultMap标签:id属性:唯一标识,给上面指向的位置。type属性:返回的结果类型
*
* id标签:完成主键的映射关系,数据库和封装类的映射
* result标签:数据库的普遍字段和封装类的映射
*
* column属性:数据库的字段
* property属性:封装类的字段
* association标签:完成一对一映射关系
*
* property属性:将结果映射到封装类的那个字段名字
* javaType属性:指定该封装类的字段类型
* id标签:完成主键的映射关系,数据库和封装类的映射
* result标签:数据库的普遍字段和封装类的映射
* collection标签:完成一对多映射关系
*
* property属性:将结果映射到封装类的那个字段名字
* ofType属性:指定关联查询的结果集中的对象类型即list中的对象类型
* id标签:完成主键的映射关系,数据库和封装类的映射
* result标签:数据库的普遍字段和封装类的映射
* useGeneratedKeys标签:开启返回的自增主键
*
* keyColumn属性:查询数据中的那个字段
* keyProperty属性:赋值给封装类的那个字段
* selectKey标签:返回自增主键
*
* order属性:指定sql的执行顺序
*
* AFTER属性:先执行插入sql语句
* BEFORE属性:首先选择主键
#{}:代表占位符(?),防止sql注入
{}内的名称:
- 如果传递的基本类型:{}内名称任意
- 如果传递的pojo:{}内名称pojo的属性名
${}:代表连接符(将条件直接拼接到sql语句中,存在sql注入) 例如:select * from user where name = ? and pwd = ? or 1=1
{}内的名称:
- 如果传递的基本类型:{}内名称必须是value
- 如果传递的pojo:{}内名称pojo的属性名
动态sql
* where标签:在sql语句后面添加where语句
*
* if标签:判断是否执行sql语句,
*
* test属性:判断语句:如果是map根据map的key进行判断,如果是包装类型是根据包装类型的字段的字段进行判断,
* foreach标签:循环
*
* collection属性:需要执行遍历的数据,如果是包装类型是根据包装类型的字段,如果是list类型,就是list的变量名
注解开发
* @Insert:实现新增
* @Update:实现更新
* @Delete:实现删除
* @Select:实现查询
* @Result:实现结果集封装
* @Results:可以与@Result一起使用,封装多个结果集 代替xml中的ResultMap标签
*
* @Result注解:代替xml中的id、result标签。
*
* column:查询的列名
* property:映射的pojo属性
* one:完成一对一映射关系
*
* select:关联查询的sql语句(同一个接口中,只需要指定方法名即可;如果在其他的接口中,格式:xxx.xxx.XxxMapper.method)
* fetchType:
*
* ENGER:立即加载
* LAZY:延迟加载
* many:完成一对多映射
*
* select:关联查询的sql语句(同一个接口中,只需要指定方法名即可;如果在其他的接口中,格式:xxx.xxx.XxxMapper.method)
* fetchType:
*
* ENGER:立即加载
* LAZY:延迟加载
* @SelectProvider: 实现动态SQL映射