您的位置:首页 > 其它

Mybatis映射关系-多对一映射

2017-12-05 15:15 211 查看
mybatis映射关系是开发中常见的一种开发思维模式,也是现在开发不可或缺的一种设计理念,今天我把多对一的程序笔记在博客上,作为日后学习的一种分享,主要步骤如下所示:

1.在entity包新建TClass.java类,用来存放class实体类,主要代码如下所示:

package com.baidu.lmj.entity;

public class TClass {

private int id;

private String cname;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getCname() {
return cname;
}

public void setCname(String cname) {
this.cname = cname;
}
}


2.在entity包中新建TStudent.java,用来存放Student实体类,主要代码如下所示:

package com.baidu.lmj.entity;

public class TStudent {

private int id;

private String username;

private int cid;

private TClass tclass;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public int getCid() {
return cid;
}

public void setCid(int cid) {
this.cid = cid;
}

public TClass getTclass() {
return tclass;
}

public void setTclass(TClass tclass) {
this.tclass = tclass;
}

}


3.在dao包中新建TStudentDao.java接口,该接口用来定义实现数据库操作的接口,代码如下所示:

package com.baidu.lmj.dao;

import java.util.List;

import com.baidu.lmj.entity.TStudent;

public interface TStudentDao {

public List<TStudent> SelectAllTStudent();
}


4.在entity包中新建TStudent.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.baidu.lmj.dao.TStudentDao">

<!-- 制定一个映射,用来接受返回类型 (type:指出指定实体类 ,id:映射名称)-->
<resultMap type="com.baidu.lmj.entity.TStudent" id="map01">

<!-- id 主键名称 result:属性名称 -->
<id column="sid" property="id"/>
<result column="username" property="username"/>
<result column="cid" property="cid"/>
<!--association:如果一个实体类中包含另一个实体类,可以用来接收属性名称 javatype:指这是指定属性名称  -->
<association property="tclass" javaType="com.baidu.lmj.entity.TClass">

<id column="cid" property="id"/>
<result column="cname" property="cname"/>

</association>

</resultMap>
<select id="SelectAllTStudent" resultMap="map01">

select a.id AS sid,username,cid,cname FROM t_class b INNER JOIN t_student a ON b.id=a.cid

</select>

</mapper>


5.接下来在src/main/resource里面添加“configure.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/project3" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!-- 实体类映射配置 -->
<mappers>

<mapper resource="com/baidu/lmj/entity/TStudent.xml"/>

</mappers>
</configuration>


6.在biz包中的TStudentBiz.java里面进行业务层逻辑操作(关于SessionFactory.java配置在我的博客接口配置这块)代码如下所示:

package com.baidu.lmj.biz;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.baidu.lmj.dao.TStudentDao;
import com.baidu.lmj.entity.TStudent;
import com.baidu.lmj.util.SessionFactory;

public class TStudentBiz {

TStudentDao dao;
public List<TStudent> getAllTStudent(){
List<TStudent> list=new ArrayList<TStudent>();

try {
SqlSession session=SessionFactory.getSession();

dao=session.getMapper(TStudentDao.class);

list=dao.SelectAllTStudent();

SessionFactory.ClosedSession(session);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}
}


7.这是最后一步,进行测试连接,代码如下所示:

package com.baidu.lmj.Main;

import java.util.List;

import com.baidu.lmj.biz.TStudentBiz;
import com.baidu.lmj.entity.TStudent;

public class Main {
public static void main(String[] args) {
TStudentBiz biz=new TStudentBiz();

List<TStudent> list=biz.getAllTStudent();

for(TStudent t:list)
{
System.out.println(t.getId()+" "+t.getUsername()+" "+t.getTclass().getId()+"("+t.getTclass().getCname()+")");
}
}
}


此外关于实体类数据库查询的配置还有另外一种配置方案,代码如下所示:

<resultMap type="com.baidu.lmj.entity.TStudent" id="map02">

<id column="id" property="id"/>

<result column="username" property="username"/>

<association property="tclass" column="cid" javaType="com.baidu.lmj.entity.TClass" select="id1">

<id column="id" property="id"/>

<result column="cname" property="cname"/>

</association>

</resultMap>

<select id="SelectAllTStudent1" resultMap="map02">

select * from t_student

</select>

<select id="id1" parameterType="int" resultType="com.baidu.lmj.entity.TClass">

select * from t_class where id=#{id}

</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis 博客