`

Java Mybatis

    博客分类:
  • Java
阅读更多
ORM这个词对于很多做J2EE开发的人来讲,并不陌生,如Hibernate,但是在使用Hibernate时,你会有一个很大的感受是什么呢?那就是关联映射这个东东不太好弄,还有级联的设置,导致在公司中,其实很用Hibernate并不是太多,所以才有Mybatis这个半ORM框架,何为半ORM框架,就是它一半是使用sql来写的,但是最终的结果是对象,这个神奇吧。而且不像网上一大堆例子,Mybatis中写了一些resutlMap之类的东东,其实,只要你sql写对了,直接可以用在Mybatis上面,根本不用写其它的内容。下面以一个例子来讲解关联的例子,我有学生表(student)和课程表(course)。

1.实体类
Student.java:对应于数据库表的实体类
public class Student {
	private int id;
	private String student_name;
	private int course_id;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}	
	public String getStudent_name() {
		return student_name;
	}
	public void setStudent_name(String student_name) {
		this.student_name = student_name;
	}
	public int getCourse_id() {
		return course_id;
	}
	public void setCourse_id(int course_id) {
		this.course_id = course_id;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.id+","+this.student_name+","+this.course_id;
	}
}



Course.java:对应数据库表的实体类
public class Course {
	private int id;
	private String course_name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getCourse_name() {
		return course_name;
	}
	public void setCourse_name(String course_name) {
		this.course_name = course_name;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.id+","+this.course_name;
	}
}


SC.java:对应于一个关联查询结果类,在后面的查询语句中体现出来
public class SC {
    private int id;
    private String student_name;
    private String course_name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getStudent_name() {
		return student_name;
	}
	public void setStudent_name(String student_name) {
		this.student_name = student_name;
	}
	public String getCourse_name() {
		return course_name;
	}
	public void setCourse_name(String course_name) {
		this.course_name = course_name;
	}
    @Override
    public String toString() {
    	// TODO Auto-generated method stub
    	return this.student_name+","+this.course_name;
    }
}


2.conf.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://localhost:3306/gaofulai" />
                 <property name="username" value="root" />
                 <property name="password" value="root" />
             </dataSource>
         </environment>
     </environments>

    <mappers>
         <!-- 注册userMapper.xml文件, 
         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
         <mapper resource="com/mapper/studentMapper.xml"/>
         <mapper resource="com/mapper/courseMapper.xml"/>
     </mappers>     
 </configuration>


3.studentMapper.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.mapper.studentMapper">
     <select id="getStudent" parameterType="int" 
        resultType="com.domain.Student">
         select * from student where id=#{id}
     </select>
     
     <select id="getStudentAndCourse" parameterType="int"
         resultType="com.domain.SC">
           select s.id, s.student_name, c.course_name  from student s, course c where s.course_id=c.id and s.id=#{id}
     </select>   
 </mapper>


4.测试
public class Test {
	public static void main(String args[]){
        String resource = "conf.xml";
        InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
      
        SqlSession session = sessionFactory.openSession();
        String statement = "com.mapper.studentMapper.getStudentAndCourse";//映射sql的标识字符串
        //执行查询返回一个唯一学生-课程对象的sql
        SC sc = session.selectOne(statement, 1000);
        System.out.println(sc);	
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics