一、ResultMap
ResultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中, resultType 和 resultMap 之间只能同时使用一个
ResultMap可以解决pojo中属性名和数据库中字段不一致的问题
当User类中password和数据库中pwd字段名不一致时
<resultMap id="UserMap" type="User">
<!-- id为主键 -->
<id column="id" property="id"/>
<!-- column是数据库表的列名 , property是对应实体类的属性名 -->
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="selectUserById" resultMap="UserMap">
select id , name , pwd from user where id = #{id}
</select>
二、通过ResultMap来实现分页功能
在接口中添加方法 List<User> getUserByLimit(Map<String , Integer> map)
<!-- 分页功能 -->
<!-- startIndex 下标值 如输入0从表格第一行开始 -->
<!-- pageSize 每面显示的最大值 -->
<select id="getUserByLimit" parameterType="map" resultMap="userMap">
select *
from mybatis.user limit #{startIndex} , #{pageSize};
</select>
<!-- 通过resultMap 结果集映射 -->
<resultMap id="userMap" type="com.autumn.pojo.User">
<!-- column 数据库中的字段 property 实体类中的字段-->
<result column="pwd" property="password"/>
</resultMap>
通过给map中传递startIndex和pageSize参数来进行分页
三、使用注解进行开发
使用注解前,先绑定需要使用注解开发的接口
<!-- 绑定接口 -->
<mappers>
<mapper class="com.autumn.mapper.UserMapper"/>
</mappers>
绑定接口后,直接在接口上进行注解开发
public interface UserMapper {
//查询所有用户
@Select("select * from mybatis.user")
List<User> getUserList();
//通过Id查询用户
@Select("select * from mybatis.user where id = #{id}")
User getUserById(int id);
//insert用户
@Insert("insert into mybatis.user(id , name , pwd) values (#{id} , #{name} , #{pwd})")
int addUser(User user);
//update用户
@Update("update mybatis.user set name = #{name} ,pwd = #{pwd} where id = #{id}")
int updateUser(User user);
//delete用户
@Delete("delete from mybatis.user where id = #{id}")
int deleteUser(int id);
//实现分页功能
@Select("select * from mybatis.user limit #{startIndex} , #{pageSize}")
List<User> getUserByLimit(Map<String , Integer> map);
}