MyBatis 是优秀的持久层框架。支持定制化 SQL、存储过程以及高级映射。
MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。
mybatis 应用基本步骤:
1、创建数据库
2、添加jar包
3、创建java (model) 例如 user.java
4、创建 Dao 接口 例如 UserMapper.java
5、实现Dao接口 UserMapper.xml
两点需要说明:
(1) namespace必须与对应的接口全类名一致。
(2) id必须与对应接口的某个对应的方法名一致即必须要和UserMapper.java接口中的方法同名。
6、Mybatis和Spring的整合
7、mybatis 配置文件
cacheEnabled: 该配置影响的所有映射器中配置的缓存的全局开关。 默认 true
lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 默认 false
aggressiveLazyLoading: 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载。默认 true
multipleResultSetsEnabled:是否允许单一语句返回多结果集(需要兼容驱动)。默认true
useColumnLabel:使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。true
useGeneratedKeys:允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。默认false
autoMappingBehavior:指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULL 默认PARTIAL
defaultExecutorType:配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。SIMPLE REUSE BATCH 默认SIMPLE
defaultStatementTimeout:设置超时时间,它决定驱动等待数据库响应的秒数。
safeRowBoundsEnabled:允许在嵌套语句中使用分页(RowBounds)。 默认false
mapUnderscoreToCamelCase:是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 默认 false
localCacheScope:MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。SESSION,STATEMENT 默认session
jdbcTypeForNull:当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 值:jdbcType enumeration. Most common are: NULL, VARCHAR and OTHER默认 OTHER。
lazyLoadTriggerMethods:指定哪个对象的方法触发一次延迟加载。值:A method name list separated by commas 默认 equals,clone,hashCode,toString。
defaultScriptingLanguage:指定动态 SQL 生成的默认语言。
callSettersOnNulls:指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的。 默认 false
logPrefix:指定 MyBatis 增加到日志名称的前缀。 值 :Any String 默认:not set
logImpl:指定mybatis所用日志的具体实现,未指定时自动查找 。值:SLF4J,LOG4J,LOG4J2,JDK_LOGGING,COMMONS_LOGGING,STDOUT_LOGGING,NO_LOGGING默认 :not null
proxyFactory:指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具。 值:CGLIB JAVASSIST 默认 :CGLIB
学习参考链接:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html