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); } }