SSM框架学习笔记-MyBatis核心配置

1.MyBatis核心配置总览

SSM框架学习笔记-MyBatis核心配置_第1张图片

2.核心对象

2.1 SqlsessionFactory

SqlSessionFactory主要作用是用于创建SqlSession对象,可以使用SqlSessionFactoryBuilder获取实例。SqlSessionFactoryBuilder则可以通过XML配置文件或者一个预先定义好的Configuration实例进行构建。
SqlSessionFactory是线程安全的,它一旦被创建,在整个应用执行期间都会存在。

2.2 SqlSession

SqlSession是应用程序与持久层之间执行交互操作的单线程对象,包含了数据库中所有执行SQL操作的方法,由于其底层封装了JDBC连接,所以可以直接使用实例来执行已映射的SQL语句。
SqlSession实例是线程不安全的,其使用范围最好在一次请求或者一个方法中,不能在一个静态字段、实例字段或者任何类型的管理范围中使用。每一个线程都应该有一个自己的SqlSession实例,并且改实例是不能被共享的。
使用完SqlSession对象后,要及时地关闭它。

3.配置文件

在MyBatis的核心配置文件中,元素是配置文件的根元素,其子元素必须按第1节中的顺序进行配置,否则MyBatis在解析XML文件的时候会报错。

3.1元素

该元素是一个配置属性的元素,可以用于将内部的配置外部化,例如将数据库的配置:
创建db.properties文件:

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

在配置文件mybatis-config.xml中配置属性:


修改配置文件中数据库的配置文件:


    
    
    
    

3.2 元素

3.3元素

该元素用于给java中的类型设置别名,可以用于减少全限定类名的命名冗余:


    

使用别名注解:

@Aliase(value="user")
public class User(){
    ....
}

3.4 元素

typeHandle元素的作用是将预处理语句中传入的参数从javaType装换成jdbcType,或者相反,MyBatis框架提供了一些默认的类型处理器,例如:BooleanTypeHandler,ByteTppeHandler等。当需要自己定义时,可以通过实现TypeHandeler接口或者继承BaseTypeHandler类来定义,元素就是用于配置自己定义的类型处理器,其有两种配置:
1.注册一个类的类型处理器




2.注册一个包的类型处理器




3.5 元素

用得不多,了解即可,默认的ObjectFactory是由org.apache.ibatis.reflection.factory.DefaultObjectFactory提供的。

3.6元素

用于配置用户开发的插件

3.7 元素

元素是环境配置的根元素,它包含了一个default属性,用于制定默认的环境ID。可以配置多个,元素内可以配置事务管理器和数据源的相关信息。
在MyBatis中提供两种事物管理器,
JDBC;此配置使用jdbc的提交和回滚设置,它依赖于从数据源得到的连接管理事物的作用域。
MANAGED:该配置不提交或回滚一个连接,而是让容器来进行事务生命周期的管理。默认情况下,它会关闭连接,但一些容器不希望这样,为此可以将closeConnection属性设置为false来阻止它默认的关闭行为。
数据源的配置,MyBatis提供了UNPOOLED、POOLED和JNDI三种数据源类型,
UNPOOLED,每次请求都会打开和关闭连接,需要配置driver、url、username、password和defaultTransactionLevel(默认的连接事务隔离级别)
POOLED,利用了池的概念,还可配置的参数有:

JNDI,次数据源可以应用在EJB或者应用服务器等容器中。容器可以集中或在外部配置数据源,然后放置一个JNDI上下文引用。

3.8 元素

用以配置映射文件,有以下几种配置方式:
1).使用类路径引入




2).使用本地文件路径引入




3).使用接口类引入




4).使用包名引入




4 映射文件

4.1 元素

示例:


4.2 元素

配置示例如下:


还可以配置的属性有:
SSM框架学习笔记-MyBatis核心配置_第2张图片
使用示例:


    insert into t_customer(username,jobs,phone) values (#{username},#{jobs},#{phone})

语句执行后会返回成功插入的行数。
当使用的数据库不支持主键自动增长(如Oracle),或者支持增长的数据库取消了主键自增的规则时,可以使用MyBatis提供的另一种方式来定义生成主键,具体配置如下:



select if(max(id)) is null,1,max(id)+1 as newId from t_customer

isnert into t_customer(id,username,jobs,phone) values(#{id},#{username},#{jobs},#{phone})

4.3 元素和元素

使用示例:



    update t_customer set username=#{username},jobs=#{jobs},phone=#{phone} where id =#{id}


    delete from t_customer where id=#{id}

4.4 元素

该元素用以配置常用的经常出现的SQL语句片段,从而达到精简配置文件的目的,示例:


${prefix}customer





id,uername,jobs,phone


4.5 元素

该元素表示结果映射集,主要作用是定义映射规则、级联的更新及定义类型转化器等,其元素结构如下;
SSM框架学习笔记-MyBatis核心配置_第3张图片
其中type属性表示需要映射的POJO,id属性为唯一标识。

public class User {
    private Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

映射文件UserMapper.xml





    
        
        
        
    
    

测试文件:

@Test
public void findAllUserByIdTest(){
    //获取SqlSession
    List list = sqlSession.selectList("top.mootong.mapper.UserMapper.findAllUser);
    for(User user:list){
        system.out.println(user);
    }
    sqlsession.close();
}

你可能感兴趣的:(SSM框架学习笔记)