myBatis处理表与表之间的关系

来源:互联网 发布:登封市java培训机构 编辑:程序博客网 时间:2024/05/16 11:42

 比如要在帖子回复表里显示其它两张相关联表的信息。

1)主要的数据实体类是Reply,相关联的实体表的数据是ThemeUserInfo

   那么首先创建的是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());

0 0
原创粉丝点击