`
a942010
  • 浏览: 1469 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mybatis小练习

 
阅读更多

 

 项目目录如上所示。

 

图3:这个是myBatisconfig.xml的配置,在这里定义了两个别名,Student和Teacher会在StudentMapper.xml中用到。中间是JDBC的配置,下面是mapper映射配置,StudentMapper.xml配置包含了下面两幅图的内容,只是部分的。

 

图1 result 里面的property属性对应的是实体类的set属性,column对应的是数据库结果集字段。这里用到了association联合查询。结果集是teacherMap,property="teacher",对应在student类中需要维护一个teacher对象,并提供get,set

 

图2  这里解释下parameterType的意思,是解释的参数类型。可以是Object,也可以是基本数据类型。一些复杂的数据类型在这里就不说了。返回值类型:如果没有返回值,可以不写。有返回值,有两种,1:resultType:实际的类型,如整型:java.lang.Integer,字符串型:java.lang.String,或者是实体类,要包含全路径名,第二种是resultMap:在这里引用了studentResultMap,图1中定义的resultMap。

 

 虽然一直在用mybatis,但是都是些比较简单的。没有深入的去了解,里面好多东西都不太知道他们的意思。今天就对他的一些东西做些了解。

 

package com.demo;

import java.io.InputStream;
import java.io.Reader;

import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;

import com.abc.entity.Student;

public class Test {
	private static SqlSessionFactory sqlSessionFactory;
	private static Reader reader;

	private static String resources="resources/myBatisconfig.xml";  //这个是要读取的mybatis配置文件
	static {

		try {
			
			//通过SqlSessionFactoryBuilder里面有多个方法得到SqlSessionFactory  
			//得到的这个SqlSessionFactory其实是new DefaultSqlSessionFactory(config);
			reader = Resources.getResourceAsReader(resources);
			//sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);  这里builder的build方法是源码自带的,实际和下面的方法调用一样(源码中也是这么调用的)
			sqlSessionFactory = build(Resources.getResourceAsStream(resources));  //这个是本地的方法,其实和源码是一样的
		} catch (Exception e) {

		}
	}

	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}

	public static void main(String[] args) {
		SqlSession session = sqlSessionFactory.openSession();//得到一个SqlSession 
		try {
			Student student = (Student) session.selectOne("com.abc.service.StudentService.queryById", 130);  //这里的查询语句对应的是图1和图2,在图2中实际的sql语句是注释里面的语句,没有注释的是联合查询的语句。
			System.out.println(student.getName());
		} finally {
			session.close();
		}

	}
	
	public static SqlSessionFactory build(InputStream inputStream){
		XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, null, null);
		return  build(parser.parse());
	}
	
	public static SqlSessionFactory build(Configuration config) {
        return new DefaultSqlSessionFactory(config);
}
}

 这个类要完成的工作是1:通过Resources加载mybatis的xml配置文件得到一个Reader或者是Stream。

2:SqlSessionFactoryBuilder.build(..)方法得到SqlSessionFactory,他返回的是DefaultSqlSessionFactory,他的构造函数需要Configuration参数,这个参数在 parser.parse()得到了。

  • 大小: 148 KB
  • 大小: 26.6 KB
  • 大小: 382.6 KB
  • 大小: 64 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics