Mybatis之全局配置

使用SqlSession获取映射器进行操作

SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

SqlSession openSession = sqlSessionFactory.openSession();

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);

 

SqlSession

SqlSession 的实例不是线程安全的,因此是不能被共享的。

SqlSession每次使用完成后需要正确关闭,这个关闭操作是必须的

SqlSession可以直接调用方法的id进行数据库操作,推荐使用SqlSession获取到Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作.

MyBatis-全局配置文件

官方配置文档说明

http://www.mybatis.org/mybatis-3/zh/configuration.html

properties属性

1 在properties 元素体内指定的属性首先被读取。

2 然后根据properties 元素中的resource 属性读取类路径下属性文件或根据url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。

3 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

引入资源:

<properties resource="dbconfig.properties"></properties>

然后就可以使用公用的数据库配置:

<dataSource type="POOLED">

<property name="driver" value="${jdbc.driver}" />

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

</dataSource>

Settings

这是MyBatis 中极为重要的调整设置,它们会改变MyBatis 的运行时行为。

autoMappingBehavior:开启自动映射的功能,默认是PARTIAL,null表示取消自动映射。

mapUnderscoreToCamelCase:开启自动驼峰命名规则映射功能。

<settings>

<setting name="mapUnderscoreToCamelCase" value="true"/>

</settings>

typeAliases别名处理器

类型别名是为Java 类型设置一个短的名字,我们可以方便引用这个类。

<typeAliases>

<!-- 1、typeAlias:为某个java类型起别名

type:指定要起别名的类型全类名;默认别名就是类名小写;employee

alias:指定新的别名

 -->

<typeAlias type="com.mybatis.bean.Employee" alias="emp"/>

<!-- 2、package:为某个包下的所有类批量起别名

name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写),)

-->

<package name="com.mybatis.bean"/>



</typeAliases>
<!--3、批量起别名的情况下,使用@Alias注解为某个类型指定新的别名 -->

@Alias("emp")

public class Employee {

}

 

类型别名

MyBatis已经为许多常见的Java 类型内建了相应的类型别名,它们都是大小写不敏感的。

typeHandlers类型处理器

无论是MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java 类型。

自定义类型处理器

1、实现org.apache.ibatis.type.TypeHandler接口或者继承org.apache.ibatis.type.BaseTypeHandler

2、指定其映射某个JDBC类型(可选操作)

3、在mybatis全局配置文件中注册

public class EmpStatusTypeHandler implements TypeHandler<EmpStatus> {

/**

 * 定义当前数据如何保存到数据库中

 */

@Override

public void setParameter(PreparedStatement ps, int i, EmpStatus parameter,

JdbcType jdbcType) throws SQLException {

ps.setString(i, parameter.getCode().toString());

}

@Override

public EmpStatus getResult(ResultSet rs, String columnName)

throws SQLException {

// TODO Auto-generated method stub

//需要根据从数据库中拿到的枚举的状态码返回一个枚举对象

int code = rs.getInt(columnName);

EmpStatus status = EmpStatus.getEmpStatusByCode(code);

return status;

}

@Override

public EmpStatus getResult(ResultSet rs, int columnIndex)

throws SQLException {

// TODO Auto-generated method stub

int code = rs.getInt(columnIndex);

EmpStatus status = EmpStatus.getEmpStatusByCode(code);

return status;

}

@Override

public EmpStatus getResult(CallableStatement cs, int columnIndex)

throws SQLException {

// TODO Auto-generated method stub

int code = cs.getInt(columnIndex);

EmpStatus status = EmpStatus.getEmpStatusByCode(code);

return status;

}


}
<typeHandlers>

<!--1、配置我们自定义的TypeHandler  -->

<typeHandler handler="com.mybatis.typehandler.EmpStatusTypeHandler" javaType="com.mybatis.bean.EmpStatus"/>

</typeHandlers>
<!--2、也可以在处理某个字段的时候告诉MyBatis用什么类型处理器

保存:#{empStatus,typeHandler=xxxx}

如果在参数位置修改TypeHandler,应该保证保存数据和查询数据用的TypeHandler是一样的。

<resultMap type="com.mybatis.bean.Employee" id="MyEmp">

  <id column="id" property="id"/>

  <result column="empStatus" property="empStatus" typeHandler=""/>

  </resultMap>

environments环境

MyBatis可以配置多种环境,比如开发、测试和生产环境需要有不同的配置。

每种环境使用一个environment标签进行配置并指定唯一标识符。

可以通过environments标签中的default属性指定一个环境的标识符来快速的切换环境。

id:指定当前环境的唯一标识

<environments default="mysql">

<environment id="mysql">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

<property name="username" value="root" />

<property name="password" value="123456" />

</dataSource>

</environment>

<environment id="oracle">

</environment>

</environments> 

transactionManager

type:JDBC | MANAGED | 自定义

JDBC:使用了JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围。JdbcTransactionFactory

MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如JEE 应用服务器的上下文)。ManagedTransactionFactory

自定义:实现TransactionFactory接口,type=全类名/别名

dataSource

type:UNPOOLED | POOLED | JNDI | 自定义

–UNPOOLED:不使用连接池,UnpooledDataSourceFactory

POOLED:使用连接池,PooledDataSourceFactory

JNDI:在EJB 或应用服务器这类容器中查找指定的数据源

自定义:实现DataSourceFactory接口,定义数据源的获取方式。

 

databaseIdProvider

MyBatis 可以根据不同的数据库厂商执行不同的语句。

<databaseIdProvider type="DB_VENDOR">

<property name="MySQL" value="mysql"/>

<property name="Oracle" value="oracle"/>

<property name="SQL Server" value="sqlserver"/>

</databaseIdProvider>

Type:DB_VENDOR

使用MyBatis提供的VendorDatabaseIdProvider解析数据库厂商标识。也可以实现DatabaseIdProvider接口来自定义。

name:数据库厂商标识

value:为标识起一个别名,方便SQL语句使用databaseId属性引用

mapper映射

逐个注册的三种方式:

<mappers>

<mapper resource="EmployeeMapper.xml" />

<mapper class="com.mybatis.dao.EmployeeMapper"/>

<mapper url="file:///D:/EmployeeMapper.xml"/>

</mappers>

批量注册:

<mappers>

<package name="com.mybatis.dao"/>

</mappers>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流光影下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值