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>