Mybatis学习笔记(四)

一、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);
}
上一篇:调优总结(一)


下一篇:MapReduce原理深入理解