MyBatis核心组件

Posted 哇有飞碟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis核心组件相关的知识,希望对你有一定的参考价值。

  1. SqlSessionFactoryBuilder (构造器)
    • 会根据配置或者代码来生成SqlSessionFactory
  2. SqlSessionFactory (工厂接口)
    • 以后他来生成SqlSession
  3. SqlSession (会话)
    • 一个既可以发送SLQ执行返回结果,也可以获取Mapper的接口
  4. SQL Mapper (映射器)
    • 负责发送SQL 去执行,并返回结果。

 

使用MyBatis 肯定是要生成 SqlSessionFactory

  1.通过读取xml 配置文件用SqlSessionFactoryBuilder 生成

  2.通过代码用 SqlSessionFactoryBuilder 生成

SqlSessionFactory的作用?

  sqlSessionFactory 唯一的作用就是生产 MyBatis的核心接口对象SqlSession

  一般采用单例模式处理它

SqlSession的作用?

  SqlSession 的作用类似一个JDBC中的 Connection 对象代表着一个连接资源的启用。

  具体

  1. 获取Mapper 接口
  2. 发送 SQL语句 给数据库
  3. 控制数据库事务
    • commit()

  如何获得 SqlSession?

   SqlSession sqlSession = SqlSessionFactoty.opensession(); 

  

SQL Mapper (映射器)的作用?

  1. 描述映射规则。
  2. 提供SQL语句,并可以配置SQL参数类型,返回类型,缓存刷新等信息。
  3. 配置缓存
  4. 提供动态 SQL

如何实现映射器?

XML 方式创建映射器

1.映射器接口

public interface RoleMapper {
    public int insertRole(Role role);
    public int deleteRole(Long id);
    public int updateRole(Role role);
    public Role getRole(Long id);
    public List<Role> findRoles(String roleName);
}

 

2.RoleMapper.xml 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.learn.ssm.chapter3.mapper.RoleMapper">

    <insert id="insertRole" parameterType="role">
        insert into t_role(role_name, note) values(#{roleName}, #{note})
    </insert>

    <delete id="deleteRole" parameterType="long">
        delete from t_role where id= #{id}
    </delete>

    <update id="updateRole" parameterType="role">
        update t_role set role_name = #{roleName}, note = #{note} where id= #{id}
    </update>

    <select id="getRole" parameterType="long" resultType="role">
        select id,
        role_name as roleName, note from t_role where id = #{id}
    </select>

    <select id="findRoles" parameterType="string" resultType="role">
        select id, role_name as roleName, note from t_role
        where role_name like concat(‘%‘, #{roleName}, ‘%‘)
    </select>
</mapper>

3.在 mybatis-config.xml 中引入XML配置文件

    <mappers>
        <mapper resource="com/ssm/mapper/RoleMapper.xml"/>
    </mappers>

注解实现映射器

1.映射器接口

public interface RoleMapper2 {
    
    @Select("select id, role_name as roleName, note from t_role where id=#{id}")
    public Role getRole(Long id);

}

2..在 mybatis-config.xml 中引入对应的class路径

   <mappers>
        <mapper class="com.ssm.mapper.RoleMapper2"/>
   </mappers>

如何获取Mapper接口?

  通过SqlSession 获取Mapper 接口,并发送SQL

 

    RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
    Role role = roleMapper.getRole(1L);

 

 

 

以上是关于MyBatis核心组件的主要内容,如果未能解决你的问题,请参考以下文章

四Mybatis 核心组件介绍

Mybatis详解

Mybatis:MyBatis核心组件介绍原理解析和源码解读

MyBatis高级特性

Mybatis核心组件

Mybatis——Dao层实现映射文件深入核心配置文件深入