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 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

引入资源:

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











Settings

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

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

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





typeAliases别名处理器

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















@Alias("emp")

public class Employee {

}

 

类型别名

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

Mybatis之全局配置_第1张图片

typeHandlers类型处理器

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

Mybatis之全局配置_第2张图片

自定义类型处理器

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

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

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

public class EmpStatusTypeHandler implements TypeHandler {

/**

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

 */

@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;

}


}







                    

你可能感兴趣的:(javaweb,mybatis)