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 对象代表着一个连接资源的启用。
具体
获取Mapper 接口
发送 SQL语句 给数据库
控制数据库事务
commit()
如何获得 SqlSession?
SqlSession sqlSession = SqlSessionFactoty.opensession();
SQL Mapper (映射器)的作用?
描述映射规则。
提供SQL语句,并可以配置SQL参数类型,返回类型,缓存刷新等信息。
配置缓存
提供动态 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 findRoles(String roleName);
}
2.RoleMapper.xml
<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>
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路径
通过SqlSession 获取Mapper 接口,并发送SQL
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
Role role = roleMapper.getRole(1L);