映射器是mybatis最复杂,最核心的组件,这篇主要讲解怎么引入映射器。
在前面写过映射器定义命名空间的方法,命名空间对应的是一个接口的全路径,而不是实现类,比如下面定义的一个接口:
package org.mybatis.mapper;
import java.util.List;
import org.mybatis.pojo.Role;
//接口
public interface RoleMapper {
// 通过id获取角色
public Role getRole(Long id);
// 插入角色
public int insertRole(Role role);
// 通过id删除角色
public int deleteRole(Long id);
// 通过角色名字,模糊查找
public List<Role> findRole(String roleName);
}
其次给出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="org.mybatis.mapper.RoleMapper">
<resultMap type="role" id="roleMap">
<!--定义结果类型转换标识,才能使用类型转换器 -->
<id column = "id" property = "id" javaType ="long" jdbcType = "BIGINT"/>
<result column ="role_name" property = "roleName" javaType = "string" jdbcType = "VARCHAR"/>
<result column = "note" property = "note" typeHandler ="org.mybatis.handler.MyStringTypeHandler"/>
</resultMap>
<!-- 根据角色id查找角色 -->
<select id="getRole" parameterType="long" resultMap="roleMap">
select id,role_name as roleName,note from role where id = #{id}
</select>
<!-- 模糊匹配查找角色 -->
<select id="findRole" parameterType = "string" resultMap="roleMap">
select id,role_name,note from role
where role_name like concat('%',#{roleName javaType=string, jdbcType=VARCHAR, typeHandler=org.mybatis.handler.MyStringTypeHandler},'%')
</select>
<!-- 插入角色 -->
<insert id="insertRole" parameterType="role">
insert into role(role_name,note) values(#{roleName},#{note})
</insert>
<!-- 删除角色 -->
<delete id="deleteRole" parameterType="long">
delete from role where id = #{id}
</delete>
</mapper>
namespace="org.mybatis.mapper.RoleMapper"是接口的全路径。
引入映射器的方法一般有下面几种:
1,用文件路径引入映射器,代码清单如下所示:
<mappers>
<mapper resource="org/mybatis/mapper/RoleMapper.xml" />
<mapper resource="org/mybatis/mapper/userMapper.xml" />
</mappers>
2,用包名引入映射器,代码如下:
<mappers>
<package name="org.mybatis.mapper"/>
</mappers>
3,用类注册引入映射器,代码如下:
<mappers>
<mapper class="org.mybatis.mapper.RoleMapper"/>
<mapper class="org.mybatis.mapper.UserMapper"/>
</mappers>
4,用userMapper.xml引入映射器,代码如下
<mappers>
<mapper url="E:\webworkspace\MyEclipse 2016\MybatisStudy2\src\org\mybatis\mapper\RoleMapper.xml"/>
</mappers>