使用JUnit测试Mybatis配置

XML配置:<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <!-- mybatis有两个配置文件一个是全局配置文件mybatis-3-config.dtd
  			一个是接口映射文件mybatis-3-mapper.dtd  接口映射文件需要使用接口文档映射定义 -->
  			
  			<!-- 在mapper映射文件中,使用mapper标签进行事先接口映射,使用namespace指定要映射的接口
  			即namespace配置的是接口的名称 一般的一个映射文件实现(映射)一个接口,在运行过程中,mybatis的代理类会
  			根据配置文件生成(实现)数据操作接口定义的数据库操作(相当于由mybatis编写了一个接口实现类)
  			-->
  			<mapper namespace="com.neuedu.mybatisdemo.dao.ICourceDao">
  			<!-- resultMap 用于配置查询结果的映射关系 -->
  			<resultMap type="Cource" id="courceMap">
  			<!-- id用于配置数据库的主键列或唯一键列 -->
			<!-- orm框架可以完成数据库表的类与java类的属性的映射关系-object mapping对象映射,relation mapping关系映射-->
  			<id column="cource_id" property="courceID"/>
  			<result column="cource_name" property="courceName"/>
  			<result column="cource_score" property="courceScore"/>
  			<result column="start_date" property="startDate"/>
  				<collection property="studentList" ofType="Student">
  							<id column="id" property="id"/>
							<result column="account" property="account"/>
							<result column="password" property="password"/>
							<result column="realname" property="realname"/>
  				</collection>
  			</resultMap>
  		
  				<!-- 在接口映射文件中,使用SELECT INSERT UPDATE DELETE配置对应的sql脚本 -->
  				<!-- 在配置标签中使用ID配置接口的方法名称 ,resultMap用于配置自定义的结果映射关系-->
  				<!-- <select id="findAll"  resultMap="courceMap">
  					select * from cource 
  				</select>  -->
  				<!-- <select id="findAll"  resultType="cource">
  					select * from cource 
  				</select>  -->
  			 <sql id="selectColumn">c.cource_id as courceID,c.cource_name as courceName ,c.cource_score as courceScore ,c.start_date as startDate </sql>
  			<select id="findAll"  resultMap="courceMap">
  					select c.*,s.* from cource c LEFT OUTER JOIN selection t ON c.cource_id=t.cource_id LEFT OUTER JOIN student s ON t.student_id=s.id
  				</select> 
  				
  				<!-- 如果使用resultType进行查询结果映射时:
  				如果数据库中数据字段名与实体类属性名相同,则可以直接进行映射,
  				否则可以使用别名进行对应的映射
  				 -->
  				<!-- 注意使用mybatis进行配置,id不能重名,即接口方法不能重载 -->
实体类:public class Cource {
	//编号
	private String courceID;
	//名称
	private String courceName;
	//学分
	private int courceScore;
	//开课时间
	private Date startDate;
	private List<Student> studentList;

	public Cource(){
		super();
	};
	
	public Cource(String courceID, String courceName, int courceScore,
			Date startDate) {
		super();
		this.courceID = courceID;
		this.courceName = courceName;
		this.courceScore = courceScore;
		this.startDate = startDate;
	}}设置参数的函数忽略
Student实体类:public class Student {
	private int id;
	private String account;
	private String  password;
	private String realname;
	//所选课程与学生之间是多对一的关系,反之学生可以与课程之间可以是一对多的关系
	//has a关系 在student类中设计一个集合属性用于保存该学生所有选择的课程信息
	private List<Cource> courceList;
	
	public Student(){super();};
	public Student(int id, String account, String password, String realname) {
		super();
		this.id = id;
		this.account = account;
		this.password = password;
		this.realname = realname;
	}

package test;


import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.neuedu.mybatisdemo.bean.Cource;
import com.neuedu.mybatisdemo.bean.Student;
import com.neuedu.mybatisdemo.dao.ICourceDao;
import com.neuedu.mybatisdemo.dao.IStudentDao;


public class TestICourceDao {
	
	private Logger logger=Logger.getLogger(TestICourceDao.class);
	private SqlSession session;
	@Before
	public void init(){
		try{
			//1.加载mybatis环境
			String resource="config/mybatis-config.xml";
			InputStream inputStream=Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
			
			//2.通过mybatis实例化数据访问接口
			session=sqlSessionFactory.openSession();
		}
		catch(IOException e){
			logger.warn("发生了异常",e);
		}
	}


	@After
	public void destory(){
		if(session!=null)
		{
			session.close();
		}
	}
	@Test
	public void testFindALl(){


			List<Cource> list=session.getMapper(ICourceDao.class).findAll();
			
			for (Cource cource : list) {
				logger.info(cource.getCourceID()+"  "+cource.getCourceName()+"  "+cource.getCourceScore()+"  "+
			cource.getStartDate());
				if(cource.getStudentList()!=null){
					for (Student student : cource.getStudentList()) {
						logger.info(student.getId()+" , "+student.getAccount()+" , "+student.getPassword()+" , "+student.getRealname());
					}
				}
			}
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值