首页 新闻 会员 周边

Mybatis关联查询报错

0
[待解决问题]

实体类

    private Long id;

    private Integer empNo;

    private Date birthDate;

    private String firstName;

    private String lastName;

    private String gender;

    private Date hireDate;
    
    private List<SalariesPo> salariesPos;
    
    private TitlesPo titlesPo;
    
    private DepartmentsPo departmentsPo;

 

mapper

/**
     * 根据条件分页查询
     * @param qo
     * @param pageBounds
     * @return
     */
    List<EmployeesPo> queryPage(@Param("qo") EmployeesQo qo,PageBounds pageBounds);

mapper配置文件

<resultMap id="EmployeesMap" type="com.linesum.model.po.EmployeesPo" >
      <id column="id" property="id" jdbcType="BIGINT" />
    <result column="emp_no" property="empNo" jdbcType="INTEGER" />
    <result column="birth_date" property="birthDate" jdbcType="DATE" />
    <result column="first_name" property="firstName" jdbcType="VARCHAR" />
    <result column="last_name" property="lastName" jdbcType="VARCHAR" />
    <result column="gender" property="gender" jdbcType="CHAR" />
    <result column="hire_date" property="hireDate" jdbcType="DATE" />
    <collection property="salariesPos" ofType="com.linesum.model.po.SalariesPo">
        <id column="salary_id" property="id" jdbcType="BIGINT" />
        <result column="emp_no" property="empNo" jdbcType="INTEGER" />
        <result column="salary" property="salary" jdbcType="INTEGER" />
        <result column="salary_from_date" property="fromDate" jdbcType="DATE" />
        <result column="salary_to_date" property="toDate" jdbcType="DATE" />
    </collection>
     <association property="titlesPo" ofType="com.linesum.model.po.TitlesPo">
        <id column="title_id" property="id" jdbcType="BIGINT" />
        <result column="emp_no" property="empNo" jdbcType="INTEGER" />
        <result column="title" property="title" jdbcType="VARCHAR" />
        <result column="title_from_date" property="fromDate" jdbcType="DATE" />
        <result column="title_to_date" property="toDate" jdbcType="DATE" />
    </association>
    <association property="departmentsPo" ofType="com.linesum.model.po.DepartmentsPo">
        <id column="dept_id" property="id" jdbcType="BIGINT" />
        <result column="dept_no" property="deptNo" jdbcType="CHAR" />
        <result column="dept_name" property="deptName" jdbcType="VARCHAR" /
    </association>
  </resultMap>
    <!--员工分页查询 -->
  <select id="queryPage" resultMap="EmployeesMap" parameterType="com.linesum.model.qo.EmployeesQo" >
        SELECT
            a.id,a.emp_no,a.birth_date,a.first_name,a.last_name,a.gender,a.hire_date,
            b.id AS title_id,b.from_date AS title_from_date,b.to_date AS title_to_date,
            c.id AS salary_id,c.from_date AS salary_from_date,c.to_date AS salary_to_date,c.salary,
            d.id AS dept_id,d.dept_name,d.dept_no
        FROM
            employees a,titles b,salaries c,departments d,dept_emp e
        WHERE
            a.emp_no = b.emp_no
        AND
            a.emp_no = c.emp_no
        AND
            e.dept_no = d.dept_no 
        <if test="qo.birthDate != null and birthDate != ''">
            AND a.birth_date = #{qo.birthDate,jdbcType=DATE},
          </if>
          <if test="qo.gender != null and qo.gender != ''" >
               AND a.gender = #{qo.gender,jdbcType=CHAR},
          </if>
          <if test="qo.hireDate != null and qo.hireDate != ''" >
            AND a.hire_date = #{qo.hireDate,jdbcType=DATE},
          </if>
          <if test="qo.salaryStart != null and qo.salaryStart != ''" >
            AND b.salary >= #{qo.salaryStart,jdbcType=INTEGER},
          </if>
           <if test="qo.salaryEnd != null and qo.salaryEnd != ''" >
            AND b.salary <= #{qo.salaryEnd,jdbcType=INTEGER},
          </if>  
  </select>

 

报错

[com.alibaba.druid.pool.DruidDataSource]{dataSource-1} closed
[org.springframework.test.context.TestContextManager]Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@2a389bdf] to prepare test instance [userweb.TestEmployeeService@6a816320]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:103)
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:73)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:313)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:284)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
远歌的主页 远歌 | 菜鸟二级 | 园豆:210
提问于:2016-09-04 00:14
< >
分享
所有回答(2)
0

加载上下文失败,你的配置文件是不是配置错了

[3] | 园豆:1174 (小虾三级) | 2016-09-04 19:21
0

1.从错误信息来看,你这是用springtest运行测试的吧。 spring上下下文加载失败了。检查你的spring配置文件是否有误。

如果有多个配置文件需要加载,可以在ContextConfiguration 里边逗号分隔。类似:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:config/applicationContext.xml","classpath:spring.xml"})
@WebAppConfiguration(value = "test-web/WebRoot")

 

2. 你的分页查询里边有 a.id ,b.id 这种得取别名吧,好久没写mybatis了,都忘记了。

 

逃离沙漠 | 园豆:259 (菜鸟二级) | 2016-09-06 09:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册