MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。文档的顶层结构如下:
configuration 配置
properties 属性
settings 设置
typeAliases 类型别名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
databaseIdProvider 数据库厂商标识
mappers 映射器
properties
配置一些常见变量,类似于spring中placeholder的作用。一般可以用来引入数据库配置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf-8
username=root
password=1234
在mybatis配置文件中配置
settings
设置参数
描述
有效值
默认值
cacheEnabled |
全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。 |
true |
false |
lazyLoadingEnabled |
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态 |
true |
false |
aggressiveLazyLoading |
当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载(参考lazyLoadTriggerMethods) |
true |
false |
multipleResultSetsEnabled |
是否允许单一语句返回多结果集(需要兼容驱动)。 |
true |
false |
useColumnLabel |
使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果 |
true |
false |
useGeneratedKeys |
允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby) |
true |
false |
autoMappingBehavior |
指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套) |
NONE, PARTIAL, FULL |
PARTIAL |
autoMappingUnknownColumnBehavior |
指定发现自动映射目标未知列(或者未知属性类型)的行为。 NONE: 不做任何反应WARNING: 输出提醒日志(‘org.apache.ibatis.session.AutoMappingUnknownColumnBehavior’ 的日志等级必须设置为 WARN) FAILING: 映射失败 (抛出 SqlSessionException |
NONE, WARNING, FAILING |
NONE |
defaultExecutorType |
配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新 |
SIMPLE REUSE BATCH |
SIMPLE |
defaultStatementTimeout |
设置超时时间,它决定驱动等待数据库响应的秒数。 |
任意正整数 |
Not Set (null) |
defaultFetchSize |
为驱动的结果集获取数量(fetchSize)设置一个提示值。此参数只可以在查询设置中被覆盖。 |
任意正整数 |
Not Set (null) |
safeRowBoundsEnabled |
允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为false。 |
true |
false |
safeResultHandlerEnabled |
允许在嵌套语句中使用分页(ResultHandler)。如果允许使用则设置为false |
true |
false |
mapUnderscoreToCamelCase |
是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射 |
true |
false |
localCacheScope |
MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。 |
SESSION |
STATEMENT |
jdbcTypeForNull |
当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 |
JdbcType 常量. 大多都为: NULL, VARCHAR and OTHER |
OTHER |
lazyLoadTriggerMethods |
指定哪个对象的方法触发一次延迟加载 |
用逗号分隔的方法列表。 |
equals,clone,hashCode,toString |
defaultScriptingLanguage |
指定动态 SQL 生成的默认语言。 |
一个类型别名或完全限定类名 |
org.apache.ibatis.scripting.xmltags.XMLLanguageDriver |
defaultEnumTypeHandler |
指定 Enum 使用的默认 TypeHandler 。 (从3.4.5开始) 一个类型别名或完全限定类名。 |
org.apache.ibatis.type.EnumTypeHandler |
|
callSettersOnNulls |
指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的 |
true |
false |
returnInstanceForEmptyRow |
当返回行的所有列都是空时,MyBatis默认返回null。 当开启这个设置时,MyBatis会返回一个空实例。 请注意,它也适用于嵌套的结果集 (i.e. collectioin and association)。(从3.4.2开始) |
true |
false |
logPrefix |
指定 MyBatis 增加到日志名称的前缀。 |
任何字符串 |
Not set |
logImpl |
指定 MyBatis 所用日志的具体实现,未指定时将自动查找 |
SLF4J |
LOG4J |
proxyFactory |
指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具 |
CGLIB|JAVASSIST |
|
vfsImpl |
指定VFS的实现 |
自定义VFS的实现的类全限定名,以逗号分隔。 |
false |
useActualParamName |
允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的工程必须采用Java 8编译,并且加上-parameters选项。(从3.4.1开始) |
true |
false |
useActualParamName |
指定一个提供Configuration实例的类。 这个被返回的Configuration实例用来加载被反序列化对象的懒加载属性值。 这个类必须包含一个签名方法static Configuration getConfiguration(). (从 3.2.3 版本开始) |
类型别名或者全类名. |
false |
typeAlias
别名
映射类型
_byte |
byte |
_long |
long |
_shtor |
shtor |
_int |
int |
_integer |
int |
_double |
double |
_float |
float |
_boolean |
boolean |
string |
String |
byte |
Byte |
long |
Long |
shtor Shtor |
|
int |
Integer |
integer |
Integer |
double |
Double |
float |
Float |
boolean |
Boolean |
date |
Date |
decimal |
BigDecimal |
bidecimal |
BigDecimal |
上面这些是由MyBatis提供的别名映射,开发者也可以自定义别名,定义方式如下
<typeAliases>
<!-- 别名不区分大小写 -->
<!-- <typeAlias type="com.sxt.bean.User" alias="user"/> -->
<!-- 指定类型名称的所属的package -->
<package name="com.sxt.bean" />
</typeAliases
==自定义别名使用不区分大小写==
typeHandlers
ypeHandlers称做类型处理器。就是实现Java类型和数据库类型之间转换的。 除了系统提供的类型转换器之外,开发者也可以自定义类型转换,如下:
例如List<—>VARCHAR之间的类型转换:
定义自定义类型转换器
/**
* 自定义的类型转换器 实现list<String> <----> String
*
* @author Administrator
*
*/
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(List.class)
public class MytypeHandler extends BaseTypeHandler<List<String>> {
/**
* PreparedStatement ps=coon.createPreparedStatement(sql);
* ps.setObject(1,xxx); ps.setObject(2,xxx); ps.setObject(3,xxx);
* ps.setObject(4,xxx); ... ps.setObject(5,xxx);
*
* 将数据保存到数据库的方法
*/
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType JdbcType)
throws SQLException {
// 1.处理自定义的类型数据
StringBuilder sb = new StringBuilder();
for (String s : parameter) {
sb.append(s + ";");
String msg = sb.toString();
if (msg.contains(";")) {
msg = msg.substring(0, msg.lastIndexOf(";"));
}
// 设置占位符对应的参数
ps.setString(i, msg);
}
}
/**
* ps.executeQuery() While(rs.next){ a;b;c rs.Object(colnmnIndex) }
*/
@Override
public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
String msg = rs.getString(columnName);
return Arrays.asList(msg.split(";"));
}
@Override
public List<String> getNullableResult(ResultSet rs, int colnmnIndex) throws SQLException {
String msg = rs.getString(colnmnIndex);
return Arrays.asList(msg.split(";"));
}
@Override
public List<String> getNullableResult(CallableStatement cs, int colnmnIndex) throws SQLException {
// TODO Auto-generated method stub
return null;
}
}
修改配置文件
<!-- 绑定自定义的类型处理器 -->
<typeHandlers>
<typeHandler handler="com.sxt.typehandler.MytypeHandler"/>
</typeHandlers>
javaBean中的数据类型
private Integer id;
private String name;
private List<String> games;
测试
@Test
public void test2() {
SqlSession session = Dbutils.getsession();
IStudentDao dao = session.getMapper(IStudentDao.class);
Student s=new Student();
s.setName("wo");
s.setGames(Arrays.asList("a","b","c"));
int i = dao.insert(s);
System.out.println(i);
session.commit();
session.close();
}
@Test
public void test3() {
SqlSession session = Dbutils.getsession();
IStudentDao dao = session.getMapper(IStudentDao.class);
List<Student> list = dao.query();
for (Student student : list) {
System.out.println(student);
}
}
转载于:https://my.oschina.net/u/4116634/blog/3043221
分享到:
相关推荐
在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...
mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...
2. **代码生成器**:通过简单的配置,插件可以自动生成Mapper接口、XML映射文件、实体类等,大大减轻了手动创建这些文件的工作量。 3. **SQL预览**:在XML映射文件中编辑SQL语句时,插件能实时显示预览结果,方便...
- **错误检测**:实时检查XML配置文件中的错误,提高代码质量。 3. **安装与使用**: 要在IDEA中安装MybatisX-idea插件,通常需要通过IDEA的插件市场搜索"MybatisX",然后按照提示进行安装。安装完成后,重启IDEA...
在描述中提到的 `mybatis-3-config.dtd` 文件则是 Mybatis 配置文件的 DTD,它定义了 Mybatis 配置文件的结构,如数据源配置、事务管理器、环境配置、插件以及 Mappers 的配置等。 总结来说,`mybatis-3-mapper.dtd...
2. **配置集成**:在Spring的配置文件中,需要添加MyBatis-Spring的相关配置,包括SqlSessionFactory和MapperScannerConfigurer,以便让Spring知道如何初始化和管理MyBatis的相关组件。 3. **Mapper接口**:创建...
1. **配置解析**:MyBatis的配置文件(mybatis-config.xml)被解析成Configration对象,这个对象包含了所有的全局配置信息,如数据源、事务管理器、Mappers等。解析过程主要由XMLConfigBuilder类完成。 2. **...
- `logback.xml`:日志配置文件,用于控制应用程序的日志输出。 - `fxml`:可能包含JavaFX的FXML文件,这是GUI界面的一部分,定义了用户界面的结构和行为。 - `icons`:图标资源文件夹,存放GUI界面中使用的图标。 -...
解决mybatis头文件报错 下载好压缩包 解压将文件放到本地文件夹 例如 D盘的哪个文件夹 D:\mybatis\ ;然后打开eclipse ->Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你...
MybatisX提供了一键跳转的能力,允许开发者直接从Mapper接口或XML配置文件中的方法名跳转到对应的SQL语句,极大地减少了查找和定位时间,提升了开发效率。这一特性尤其对于大型项目或者维护旧代码时特别有用。 其次...
《深入解析mybatis-spring-1.3.0....在具体使用时,我们需要在Spring的配置文件中添加MyBatis-Spring的相关配置,包括数据源、SqlSessionFactory和MapperScannerConfigurer等。例如: ```xml <!-- 数据源配置 --> ...
1. **MyBatis 配置**:理解 XML 配置文件和 Java 配置类,包括数据源、SqlSessionFactory 和 SqlSessionTemplate 的配置。 2. **Mapper接口**:定义业务操作的接口,每个方法对应一个 SQL 语句,通过注解或 XML 映射...
提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL标签 ResultMap中的property支持自动补全,支持级联(属性A.属性B.属性C) 快捷键生成@Param...