Mybatis配置

Mybatis配置

MyBatis配置文件元素



    
    
    
    
    
    
    
        
            
            
        

    
    

Mybatis的配置顺序不能颠倒

Property子元素







    
    
        
    

    
        
            
                
            
                
                
                
                
            
        
    

    
        
    
    



使用properties文件

jdbc.properties


database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/ssm
databaes.username=root
database.password=123456

使用程序传递方式传递参数

在实际的生产环境中,数据库的用户密码保密,运维人员一般将用户和密码经过加密成为密文。

String resource = "mybatis-config.xml";
InputStream inputStream;

InputStream in = Reources.getResourceAsStream("jdbc.properties");

Properties props = new Properties();
props.load(in);
String username = props.getProperty("database.username");

String password = props.getProperty("database.password");

//解密用户和密码,并在属性中重置

props.put("database.username",CodeUtils.decode(username));

props.put("database.password",CodeUtils.decode(password));

inputStream = Resources.getResourceAsStream(resource);

//使用程序传递的方式覆盖原有的properties属性参数

SqlSessionFactroy = new SqlSessionFactoryBuilder().build(inputStream,props);

首先使用Resources对象读取了一个jdbc.properties配置文件,然后获取了它原来配置的用户名和密码,进行解密并重置,最后使用SqlSessionFactoryBuilder的build方法, 传递多个properties参数来完成。这将覆盖之前配置的密文。

settings设置

全量settings的配置样例


    
    
    
    
    
    
    
    
    
    
    
    
    
    

    

    

    

typeAliases别名

自定义别名:


    
    
    


如果有很多类需要定义别名,Mybatis还支持扫描别名。


    

系统定义的typeHandler

在Mybatis中typeHandler需要实现接口org.apache.ibatis.type.TypeHandler.

TypeHandler.java


public interface TypeHandler{
    void setParameter(PreparedStatement ps, int i, T parameter, jdbcType jdbcType) throws SQLException;
    
T getResult(Result rs, String columnName) throws SQLException;

T getResult(Result rs, int columnIndex) throws SQLException;

T getResult(Result rs, int columnIndex) throws SQLxception;

T getResult(CallableStatement cs, int columnIndex) throws SQLException;

}
  • 其中T是泛型,专指javaType,比如我们需要String的时候,那么实现类可以写为implements TypeHandler .

  • setParameter方法,是使用typeHandler通过PreparedStatement对象进行设置SQL参数的时候使用的具体方法,其中i是参数在SQL的下标,parameter是参数,jdbcType是数据库类型。

  • 其中有三个getResult的方法,它的作用是从JDBC结果集中获取数据进行转换,要么使用列名(columnName) 要么使用下标(columnIndex)获取数据库的数据,其中最后一个getResult方法是存储过程专用的。

你可能感兴趣的:(Mybatis配置)