为什么需要
SQL和Java编码分开,功能边界清晰
是什么
持久层框架(dao)
怎么用
1、导入依赖pom.xml
Mybatis核心org.mybatis、junit测试junit、MySQL驱动mysql
2、全局配置文件mybatis-config.xml
引入外部文件 properties resource
开发环境environment default:
具体环境environment id
事务管理器transactionManage type="JDBC"
数据源dataSource type="POOLED"
property name value
Mybatis映射文件mappers
mapper resource
驼峰式名命
settings
setting name="mapUndersoreToCamelCase " value="true"
延迟加载
settings
lazyLoadingEnabled true
aggressiveLazyLoading false
实体类别名
typeAliases
package name
3、xxxMapper.xml
名命空间 mapper namespace
select id resultType
4.jdbc.properties
5.对一关系xxxMapper.xml:association和JavaType
对多关系:collection ofType
分步: association/collection select
动态SQL
where
if test
update
set
if test
两端是否包含某些字符trim
suffixOverrides 取消后缀 | 分隔
choose
when
otherwise
foreach collection item separator index
引用已经抽取的SQL片段
include refid
缓存
一级缓存:SqlSession级别
二级缓存:SqlSessionFactory级别
Mapper.xml中加入cache
缓存的本质是一个Map
都是由PerpetualCache实现,只是调用者不同
逆向工程
pom
build
plugins
plugin
org.mybatis.generator
MBG配置文件
执行MBG插件
QBC拼装查询条件
Ceriteria
注意的问题
Java实体类中,要使用包装类
XML只是在框架初始化时加载
Tip
框架=jar包(特定功能的固定解决方案)+配置文件(个性化定制)
工厂模式:创建对象时,过程基本固定,封装
Mapper相当于之前的Dao,但Mapper不需要提供实现类,而是去加载XML文件
一般是功能开发完成,再加外键约束检查是否有Bug
日志
debug(调试)<INFO(信息)<WARN(警告)