MyBatis基本使用及XML配置

概述

MyBatis是一款优秀的持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作,可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。

github地址

https://github.com/mybatis/mybatis-3/

依赖


    
    
        org.mybatis
        mybatis
        3.5.7
    
    
    
        junit
        junit
        4.12
        test
    
    
    
        mysql
        mysql-connector-java
        5.1.3
    

mybatis配置文件

创建mybatis配置文件mybatis-config.xml




    
        
            
            
                
                
                
                
            
        
    
    
    
        
    

sql映射文件

sql映射文件xxxMapper.xml





    

基本使用

  1. 根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象

  1. sql映射文件。配置了每一个sql,以及sql的封装规则等

  1. 将sql映射文件注册在全局配置文件中

  1. 写代码

  1. 根据全局配置文件得到SqlSessionFactory

  1. 使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查

一个sqlSession就是代表和数据库的一次会话,用完关闭

  1. 使用sql的唯一标识来告诉MyBatis执行哪个sql,sql都是保存在sql映射文件中的

public class MyBatisTest {

    @Test
    public void test() throws IOException{
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.获取sqlSession实例,能直接执行已经映射的sql语句
        SqlSession openSession = sqlSessionFactory.openSession();
        //第一个参数 sql语句的唯一标识符 第二个参数 执行sql 语句要用的参数
        try {
            Xxx xxx = openSession.selectOne("com.xxx.mybatis.xxxMapper.selectXxx", 1);
            System.out.println(xxx);
        }finally {
            openSession.close();
        }
    }
}

接口式编程

创建Dao接口

public interface XxxMapper {

    public Xxx getXxxById(Integer id);
}

基本使用

public class MyBatisTest{

    public SqlSessionFactory getSqlSessionFactory() throws IOException{
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);

    }
    @Test
    public void test01() throws IOException {
        //1.获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2.获取sqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            //3.获取接口的实现类对象
            //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法,将接口与xml进行绑定
            XxxMapper mapper = openSession.getMapper(XxxMapper.class);
            Xxx xxx = mapper.getXxxById(1);
            System.out.println(mapper.getClass());
            System.out.println(xxx);
        }finally {
            openSession.close();
        }
    }
}

重要的配置文件

  • mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息,系统运行环境信息

  • sql映射文件:保存了每一个sql语句的映射信息

XML 配置

属性(properties)

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:

  • resource:引入类路径下的资源

  • url:引入类路径或者磁盘路径下的资源

设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如




dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

设置(settings)

 
    
        
    
mapUnderscoreToCamelCase,是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn,默认为false

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

 
    
        
        

        
        

        
    
@Alias("emp")
public class Employee {
}

类型处理器(typeHandlers)

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

https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

插件(plugins)

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。

https://mybatis.org/mybatis-3/zh/configuration.html#plugins

环境配置(environments)

  
    
        
            
            
        

数据库厂商标识(databaseIdProvider)

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载带有匹配当前数据库 databaseId 属性和所有不带 databaseId 属性的语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。 为支持多厂商特性,只要像下面这样在 mybatis-config.xml 文件中加入 databaseIdProvider 即可


    
        
        
        
        
    
    

映射器(mappers)

定义 SQL 映射语句,首先我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。

  
    
        
        
        

        
        
    

你可能感兴趣的:(JAVA,mybatis,java,数据库,持久层框架,JDBC)