zoukankan      html  css  js  c++  java
  • 11、mybatis学习——自定义结果映射resultMap以及关联查询

    一、没有级联属性的情况时

      

       sqlmapper文件配置

        <!-- 自定义resultMap
                type:指定返回的类型;id:指定resultMap的唯一标识 -->
        <resultMap type="com.pxxy.bean.Employee" id="empMap">
            <id column="id" property="id"/>
            <!-- 列名和属性名一样的时候可以不写 -->
            <result column="name" property="name"/>
            <result column="gender" property="gender"/>
        </resultMap>
            
            <!-- 返回resultMap -->
        <select id="selectEmpById" resultMap="empMap">
            select * from employee where id = #{emp_id}
        </select>

      mapper接口定义方法

       测试方法:

    二、有级联属性的情况时

        student关联college

     

        sqlmapper文件配置:

    方式一:(以属性.属性进行传值)

     方式二:(以association的方式)

       mapper接口定义方法

       测试方法

    三、有级联属性的情况时并使用分布查询

     student关联college

     

    StudentMapper接口方法

     CollegeMapper接口方法

    student的sqlmapper配置文件中配置分布查询

         <resultMap type="com.pxxy.bean.Student" id="stuStepMap">
             <id column="id" property="id"/>
             <!-- 列名和属性名一样的时候可以不写 -->
             <result column="name" property="name"/>
             <!-- association可以指定联合的javabean对象
                 property="":指定哪个属性是联合的对象
                 select:表明当前属性是调用select指定的方法查出的结果
                 column:指定将哪一列的值传给这个方法作为参数
                 流程:使用select指定的方法(传入column指定的值作为参数)查出对象,并封装给property指定的属性 -->
             <association property="college" 
                 select="com.pxxy.bean.CollegeMapper.getColById"
                 column="c_id">    <!-- 这里student表中的外键为c_id,查询时也没有取别名 -->
             </association>
         </resultMap>
         
         <select id="getStuByIdStep" resultMap="stuStepMap">
             select * from student where id=#{id}
         </select>

    college的sqlmapper配置文件配置

    <mapper namespace="com.pxxy.bean.CollegeMapper">
        <select id="getColById" resultType="college">
            select * from college where id = #{id}
        </select>
    </mapper>

    测试

        @Test
        public void testGetStuByIdStep() throws IOException {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
            System.out.println(studentMapper.getStuByIdStep(1));
            sqlSession.close();
        }

  • 相关阅读:
    通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行 from MSDN
    编写自己的dojo扩展zt
    Adding an IE7 Browser Template for use by Web Tests
    MAC地址与IP地址绑定策略的破解zt
    .net 中string 的应用特点(转贴)让我豁然开朗
    全国最佳医院排名(供参考)
    小心你的Page_Load重复执行(转贴)
    A780知识总汇zt
    [Quoted] Writing HighPerformance Managed Applications : A Primer
    [网络摘录学习]常用的Linux系统监控命令
  • 原文地址:https://www.cnblogs.com/lyh233/p/12347818.html
Copyright © 2011-2022 走看看