mybatis的resultMap自定義結果映射規則


更多精彩文章歡迎關注公眾號“Java之康庄大道”

dao接口

User myGetUserById(Integer id);

sql xml自定義封裝規則

<!--自定義某個javabean的封裝規則
type:自定義規則的java類型
id:唯一標識方便引用
-->
 <resultMap id="myUser" type="com.yunqing.mybatis.bean.User">
        <!--id指定主鍵列的封裝規則,return指定普通列的封裝規則
        column:數據庫列名
        property:對應的javabean屬性
        -->
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
    </resultMap>
    <!--使用自定義封裝規則-->
    <select id="myGetUserById" resultMap="myUser">
        SELECT * FROM t_user WHERE id = #{id}
    </select>

test測試類

    @Test
    public void myGetUserById() throws IOException {
        String r = "mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(r);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.myGetUserById(1);
        System.out.println(user);
    }

關於級聯映射結果集的規則:

javabean的User.java

    private Integer id;
    private String name;
    private Integer age;
    private Department dep;//所屬部門

Department.java

    private Integer id;//部門id
    private String departmentName;//部門名

通過用戶id查詢用戶和部門信息

User getUserAndDepById(Integer id);

returnMap映射級聯結果集

第一種:

<!-- 自定義結果集,使用級聯屬性封裝第一種方式-->
    <resultMap id="myMapJiLian" type="com.yunqing.mybatis.bean.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="did" property="dep.id"/>
        <result column="dep_name" property="dep.departmentName"/>
    </resultMap>

<!--使用級聯屬性-->
    <select id="getUserAndDepById" resultMap="myMapJiLian">
        SELECT u.id id,u.name name,u.age age,u.dep_id dep_id,dep.id did,dep.department dep_name FROM t_user u,t_dep dep WHERE
        u.dep_id=dep.id AND u.id=#{id}
    </select>

第二種

<!-- 自定義結果集第二種方式
        association可以指定聯合javabean對象
        property指定那個屬性是聯合的對象即外鍵
        javaType不能省略,指定這個屬性對象的類型
    -->
    <resultMap id="myMapAss" type="com.yunqing.mybatis.bean.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <association property="dep" javaType="com.yunqing.mybatis.bean.Department">
            <id column="did" property="id"/>
            <result column="dep_name" property="departmentName"/>
        </association>
    </resultMap>

<!--使用級聯屬性-->
    <select id="getUserAndDepById" resultMap="myMapAss">
        SELECT u.id id,u.name name,u.age age,u.dep_id dep_id,dep.id did,dep.department dep_name FROM t_user u,t_dep dep WHERE
        u.dep_id=dep.id AND u.id=#{id}
    </select>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM