ibatis There is no statement named XXXX 常见的一个解决方案


有两个类:

public class Person {

private Integer id;
private String firstName;
private String lastName;
private String email;
private Department dept;

// getter and setter methods
}

public class Department {

private Integer id;
private String name;
private Set<Person> persons;

//getter and setter methods
}

现在通过Person提供的一个ID号,来查询一条person记录,记录包括:
id
firstName
lastName
email
dept.id
dept.name




SQL MAP xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org//dtd//sql-map-2.dtd">

<sqlMap namespace="Person">

<typeAlias alias="Person" type="com.ymq.ibatis.Person"/>
<typeAlias alias="Dept" type="com.ymq.ibatis.Department"/>

<resultMap id="get-person-result" class="Person">

<result property="id" column="id"/>
<result property="firstName" column="firstName"/>
<result property="lastName" column="lastName"/>
<result property="email" column="email"/>
<result property="dept" column="dept_id" select="Person.getDept"/>

</resultMap>

<resultMap id="get-dept-result" class="Dept">
<result property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>

<select id="getDept" parameterClass="int" resultMap="get-dept-result">
select * from department where id=#value#
</select>

<select id="getPerson" resultMap="get-person-result">
select * from person where id=#value#
</select>


</sqlMap>



测试代码
[code]
@SuppressWarnings("unchecked")
public static void main(String[] args) throws IOException ,SQLException{
Reader reader = Resources.getResourceAsReader("com/ymq/ibatis/SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader );
System.out.println("查询所有的用户信息");
Person person = (Person)sqlMap.queryForObject("Person.getPerson", 1);

System.out.println("id:"+person.getId());
System.out.println("name:"+person.getFirstName()+person.getLastName());
System.out.println("deptId:"+person.getDept().getId());
System.out.println("deptName:"+person.getDept().getName());
}
[/code]


报错:ibatis There is no statement named “getDept”。。。。

仔细观察知道

[code]

<resultMap id="get-person-result" class="Person">

<result property="id" column="id"/>
<result property="firstName" column="firstName"/>
<result property="lastName" column="lastName"/>
<result property="email" column="email"/>
<result property="dept" column="dept_id" select="getDept"/>
[/code]


这句:<result property="dept" column="dept_id" [color=red]select="getDept[/color]"/>

红色字体要用select="Person.getDept"代替,因为设置了命名空间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值