流程:
java工程 -->创建测试库,测试表,javabean,数据库的dao接口
导包-->配置-->测试
配置
第一个配置文件 mybatis的全局配置文件 (指导mybatis如何正确运行) 注册sql映射文件
第二个配置文件sql映射文件(描述dao接口中方法如何工作)
namespace 名称空间写接口全类名 (告诉mybatis实现哪个接口)
测试
根据全局配置文件创建一个SqlSessionFactory
SqlSessionFactory中获取sqlSession对象操作数据库
config.dtd 当前xml的约束文件 <settings>标签可以改变mybatis运行时行为
批量注册 接口与映射文件要在同一个包下,包名要一样
获取自增主键的值
useGeneratedKeys = "true" keyProperty = "id" 将自增的值封装给id属性
参数的各种取值
单个参数无需对应 或则@Param
多个参数
封装成POJO 取值 #{POJO属性名}
封装成Map 取值#{key}
N#{} 参数预编译方式,参数用?替代,参数后来都是预编译设置进去
${}直接和SQL语句拼串
默认Mybatis自动封装结果集
1.按照列和属性名--对应
2.不一一对应
1.开启驼峰命名法 (满足驼峰规则)
2.起别名
3.自定义ResultMap(自定义结果集)
查询多个封装map 用@MapKey (“id”)使用对象的属性作为map的id
ResultMap(自定义类型) 返回值的封装类型
自定义映射 type:最终结果集封装的类型 <id>:完成主键列的映射 column:指定结果集的列名 property: 指定对象的属性名 <result> 完成普通列的映射 <association> : 一个复杂类型的关联 property : 指定联合属性 javaType : 指定联合属性的类型 <collection> :复杂类型的集 property : 指定的联合属性 ofType : 集合中元素的类型 (这里是Employee类型)
设置外键的好处: 数据的安全性
1-N 外键一定放在N端
N-N创建中间表
推荐简单查询 , 连接查询 不推荐分步查询 <association>标签
连接
内连接 : 交集
外连接 : 主表 从表 取值: 主表都要 ,从表交集
OGNL表达式 对象导航语言 ,一种强大的表达式语言,通过它可以非常方便的来操作对象属性类似EL,SPEL等
XML中特殊字符需要转义
Mybatis 动态sql (解决字符串拼接) : 使用mybatis 自带标签 里面使用OGNL 表达式
if标签 where标签 trim 标签 foreach标签 set标签 推荐由where标签和set标签 不使用trim标签 <if test="id!=null"> where标签可以取代前面的and set标签解决 后面的,