MyBatis 配置1
来源:互联网 发布:如何黑进路由器 知乎 编辑:程序博客网 时间:2024/06/10 02:30
MyBatis配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 配置 --> <properties/><!-- 属性,可以给系统配置一些运行参数 --> <settings/><!-- 设置 --> <typeAliases><!-- 类型命名 --> <package name="com.xx.xx.tntity"/> </typeAliases> <typeHandlers/><!-- 类型处理器 --> <objectFactory type=""></objectFactory><!-- 对象工厂 --> <plugins><!-- 插件 --> <plugin interceptor=""></plugin> </plugins> <environments default="development"><!-- 配置环境 --> <environment id="development"><!-- 环境变量 --> <transactionManager type="JDBC"></transactionManager><!-- 事务管理器 --> <dataSource type="POOLED"><!-- 数据源 --> </dataSource> </environment> </environments> <databaseIdProvider type=""></databaseIdProvider><!-- 数据库厂商标识 --> <mappers></mappers><!-- 映射器 --></configuration>
- properties 属性
可以给系统配置一些运行的参数,可以放在XML文件或者properties文件中,而不是放在java编码中,这样的好处在于方便参数修改,而不会引起代码的重新编译。
property子元素:
<properties> <property name="database.driver" value="com.mysql.jdbc.Driver"/> <property name="database.url" value="jdbc:mysql://localhost:3306/test"/> <property name="database.username" value="root"/> <property name="database.password" value="root"/> </properties>
- properties文件
通过键值对应,我们可以配置多个放在文件中,然后在mybatis-config.xml文件中引入:
<properties resource="jdbc.properties"></properties>
- settings 设置
settings是MyBatis中最复杂的配置,它能深刻影响MyBatis底层的运行,但是在大部分情况下使用默认便可以运行,所以大部分情况下不太需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器类型等。
由于配置太多,这里不再例举,下面给出一个最全的配置样列,如下常用配置:
<settings><!-- 设置 --> <!-- 该配置影响所有映射器中配置缓存的全局开关 默认:true --> <setting name="cacheEnabled" value="true"/> <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关系中可通过设置fetchType属性来覆盖该项的开关状态。 默认:false--> <setting name="lazyLoadingEnabled" value="true"/> <!-- 是否允许单一语句返回多结果集(需要兼容驱动) 默认:(版本3.4.1之前是true,之后是false)true --> <setting name="multipleResultSetsEnabled" value="true"/> <!-- 允许jdbc支持自动生成主键,需要驱动兼容。如果设置true,则这个设置强制使用自动生成主键。 默认:false --> <setting name="useGeneratedKeys" value="false"/> <!-- 指定MyBatis应该如何自动映射列到字段或属性。NONE表示取消自动映射;PARTIAL表示智慧自动映射, 没有定义嵌套结果集和映射集。FULL会自动映射任意复杂的结果集 默认:PARTIAL --> <setting name="autoMappingBehavior" value="PARTIAL"/> <!-- 指定自动映射当中未知列(或位置属性类型)时的行为。默认是不处理,只有当日志级别达到WARN级别或者以下,才会显示相关日志,如果处理失败就会抛出SqlSessionException异常 默认:NONE --> <setting name="autoMappingUnKnownColumnBehavior" value="WARNING"/> <!-- 默认的执行器。SIMPLE是普通的执行器;REUSE会重用预处理语句;BATCH执行器将重用语句并执行批量更新 默认:SIMPLE --> <setting name="defaultExecutorType" value="SIMPLE"/> <!-- 设置超时时间,它决定驱动等待数据库响应的秒数 默认:Not Set --> <setting name="defaultStatementTimeout" value="25"/> <!-- 设置数据库驱动程序默认返回的条数限制,此参数可以重新设置 默认:Not Set --> <setting name="defaultFetchSize" value="100"/> <!-- 允许在嵌套语句中使用分页(RowBounds),如果允许设置false 默认:false --> <setting name="safeRowBoundsEnabled" value="false"/> <!-- 允许在嵌套语句中使用分页(ResultHandler),如果允许设置false 默认:true --> <setting name="mapUnderscoreToCamelCase" value="false"/> <!-- MyBatis利用本地缓存机制防止循环引用和加速重复嵌套查询。SESSION这种情况下会缓存一个会话中执行的所有查询。 STATEMENT,本地会话仅用在语句执行上,对相同SqlSession的不同调用讲不会共享数据 默认:SESSION --> <setting name="localCacheScope" value="SESSION"/> <!-- 当没有参数提供特定的JDBC类型时,为空值指定JDBC类型。某些驱动需要制定列的JDBC类型,多数情况下直接用一般类型即可, 比如NULL、VARCHAR、OTHER 默认:OTHER --> <setting name="jdbcTypeForNull" value="OTHER"/> <!-- 指定哪个对象的方法触发一次延迟加载 --> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>
typeAliases 别名
由于类的全限定名称很长,需要大量使用的时候,总写那么长的名称不方便。在MyBatis中允许定义一个简写来代表这个类,这就是别名。
别名分为系统定义别名和自定义别名
1、系统别名:在MyBatis初始化的时候,系统自动初始化了一些别名 例如 _byte —> byte
2、自定义别名:指定某几个类使用别名
<typeAliases><!-- 类型命名 --> <typeAlias type="com.xx.xx.entity.Role" alias="role"/> </typeAliases>
扫描指定包只用别名
<typeAliases><!-- 类型命名 --> <package name="com.xx.xx.tntity"/></typeAliases>
别名冲突后,可以更改@Alias("abc")public class Analyst
- typeHandler 类型转换器
在JDBC中,需要在PreparedStatement对象中设置那些已经预编译过的SQL语句的参数。执行SQL后,会通过ResultSet对象获取得到数据库中的数据,而这些MyBatis
是根据数据的类型通过typeHandler来实现的。
typeHandler又分为 jdbcType(用于定义数据库类型) 和 javaType(用于定义java类型)。
作用:就是承担jdbcType和javaType之间的转换。
它也分两种,一种是系统定义一种是自定义。绝大多数情况下系统定义都可以满足需求,当在使用枚举的时候需要使用自定义,例:
(1):org.apache.ibatis.type.EnumOrdinalTypeHandler
是按MyBatis根据枚举数据下标索引的方式进行匹配的,也是枚举类型的默认转换类,它要求数据库返回一个整数作为下标,它会根据下标找到对应的枚举类型。
1.枚举public enum SexEnum { MALE(1,"男"), FEMALE(0,"女"); private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } SexEnum(int id,String name){ this.id=id; this.name=name; } public SexEnum getSexById(int id){ for(SexEnum sex : SexEnum.values()){ if(sex.getId()==id){ return sex; } } return null; }}2.entityprivate SexEnum sex;3.xml<resultMap id="BaseResultMap" type="com.bob.analyst.model.Analyst"> <id column="id" jdbcType="BIGINT" property="id" /> **<id column="sex" property="sex" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </resultMap>**4.Service@Override public Analyst selectByPrimaryKey(Long id) { Analyst analyst=analystMapper.selectByPrimaryKey(id); System.out.println(".........sex:"+analyst.getSex().getName()); return analyst; }
(2):EnumTypeHandler:会把使用的名称转化为对应的枚举,比如它会根据数据库返回的字符串“MALE”,进行 Enum.valueOf(SexEnum.class,”MALE”);转换
<id column="sex" property="sex" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
阅读全文
0 0
- MyBatis 配置1
- MYBATIS简单配置(1)
- spring4.1+mybatis简单配置
- 配置SpringMVC+Mybatis+SQLServer (1)
- mybatis配置
- mybatis 配置
- mybatis配置
- mybatis配置
- mybatis----配置
- Mybatis配置
- mybatis配置
- mybatis配置
- mybatis配置
- mybatis配置
- mybatis 配置
- mybatis配置
- myBatis配置
- myBatis配置
- Xcode8 missing file 报出 ”xx“is missing from working copy 的问题 解决方法汇总
- Eclipse项目导入到Android Studio时遇到的错误Error: java.util.concurrent.ExecutionException: com.android.ide.comm
- 2017大二第三周学习笔记
- JAVA学习笔记04——Linux系统下安装Tomcat
- Oracle物化视图详解
- MyBatis 配置1
- crf模型
- Java数据结构之队列_动力节点Java学院整理
- mybatis学习笔记一 简介
- 部分OI常用数论符号集锦
- 虚拟资源引流变现
- Unix——《Unix网络编程》配置unp.h头文件
- 为什么macCharts.js没有引入echart却可以用echarts
- 泛型类型擦除,如何工作,由来