比如要在帖子回复表里显示其它两张相关联表的信息。
1)主要的数据实体类是Reply,相关联的实体表的数据是Theme,UserInfo。
那么首先创建的是ReplyView的实体对象。
//要关联的哪些数据,就直接把该数据加入到继承类的字段里。
package com.model;
public class ReplyView extends Reply{
private String userName;
private String themeName;//帖子名称
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getThemeName() {
return themeName;
}
public void setThemeName(String themeName) {
this.themeName = themeName;
}
}
2)编写相应的处理接口(Mapper接口):
package com.dao.imp;
import com.dao.IDaoBBS;
import com.model.Reply;
public interface ReplyMapper extends IDaoBBS<Reply> {
}
3)编写相应的SQL配置文件(ReplyMapper.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="com.dao.imp.ReplyMapper">
<select id="getModel" resultType="com.model.ReplyView">
select r.*,u.*,t.*
from reply r inner join userInfo u on r.userId=u.userId
inner join theme t on r.themeId=t.themeId
where r.replyId=#{id}
</select>
</mapper>
4)将刚编写的mapper映射文件加入到mybatis-config.xml中:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="config.properties">
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.jdbcUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/model/UserInfoMapper.xml"/>
<mapper resource="com/model/ReplyMapper.xml"/>
</mappers>
</configuration>
5)编写测试类:
public static void main(String[] args) {// TODO Auto-generated method stub
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
ReplyMapper replyMapper = sqlSession.getMapper(ReplyMapper.class);
ReplyView rv = (ReplyView) replyMapper.getModel("123");
System.out.println("帖子内容:"+rv.getReplycontent());
System.out.println("用户名:"+rv.getUserName());