zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    实验10 指针2。
    作业5 指针应用1。
    实验9 指针1。
    作业4 函数应用。
    实验8 数组2。
    实验7 综合练习。
    实验6 数组1。
    实验5 函数。
    作业3 应用分支与循环结构解决问题。
    作业2 分支、循环结构。
  • 原文地址:https://www.cnblogs.com/yunqing/p/8111210.html
Copyright © 2011-2022 走看看