ABCzhouxueqin
2015-08-30 15:35
在MyBatis一对多的关系中,按照老师的方法配置了COMMAND表和COMMAND_CONTENT表对应的JAVA类和相应的XML文件,执行后,在控制台的DEBUG级别的日志显示结果为4条数据,封装到COMMAND类对象中是一条数据,从COMMAND对象中再取它的LIST<CommandContent>链表,理应为4个CommandContent类的对象才合情合理,但执行结果只有一条,第一条记录。
郁闷,不知是什么原因?请老师或者热心人给予帮助。 也可QQ联系我:372102668
万分感谢。
这是我的JAVA类及相应的XML
(1)Command.java
package cn.sdut.bean;
import java.util.List;
public class Command {
private int id;
private String command;
private String description;
private List<CommandContent> contents;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCommand() {
return command;
}
public void setCommand(String command) {
this.command = command;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<CommandContent> getContents() {
return contents;
}
public void setContents(List<CommandContent> contents) {
this.contents = contents;
}
}
(2)CommandContent.java
package cn.sdut.bean;
public class CommandContent {
private int id;
private String content;
private int commandId;
public int getCommandId() {
return commandId;
}
public void setCommandId(int commandId) {
this.commandId = commandId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
(3) Command.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Command">
<resultMap type="cn.sdut.bean.Command" id="CommandResult">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="command" jdbcType="VARCHAR" property="command"/>
<result column="description" jdbcType="VARCHAR" property="description"/>
<collection property="contents" resultMap="Content.ContentResult"></collection>
</resultMap>
<select id="commandList" parameterType="cn.sdut.bean.Command" resultMap="CommandResult">
SELECT a.id,command,description,content
FROM command a,command_content b
<where>
a.id=b.command_id
<if test="command!=null and !"".equals(command.trim())">
and a.command like '%' #{command} '%'
</if>
</where>
</select>
</mapper>
(4)CommandContent.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Content">
<resultMap type="cn.sdut.bean.CommandContent" id="ContentResult">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="content" jdbcType="VARCHAR" property="content"/>
<result column="command_id" jdbcType="INTEGER" property="commandId"/>
</resultMap>
</mapper>
(5) 数据库中的2个表的定义SQL语句:
create table command(
id int primary key auto_increment,
command varchar(20) ,
description varchar(40)
)
create table command_content(
id int primary key auto_increment,
content varchar(2048),
command_id int
)
刚解决,应该是列名一致了
两个表的id字段不要都叫id,需要不一样。或者可以在查询的时候取别名
同样的问题 ,数据库查询没问题
你可以先把你的sql复制一下,到数据库中执行以下,看看可以查到几点数据?
同样的问题。 求楼主分享
通过自动回复机器人学Mybatis---加强版
53657 学习 · 121 问题
相似问题