工程结构
表结构
mybatis.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> <!-- 环境:配置mybatis的环境 --> <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/test" /> <property name="username" value="root" /> <property name="password" value="0000" /> </dataSource> </environment> </environments> <!-- 指定实体类映射文件 --> <mappers> <mapper resource="com/my/pojo/ClassesMap.xml"/> </mappers> </configuration> |
ClassesMap.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.my.pojo.ClassesMap"> <!-- 配置SQL语句 --> <!-- resultMap="resclassesmap"对应 <resultMap>的ID --> <select id="getClassesTeacherMap" resultMap="resclassesmap"> select * from classes c,teacher t where c.teacher_id=t.t_id and c.c_id=#{id} </select> <!--指定类属性 --> <resultMap id="resclassesmap" type="com.my.pojo.Classes"> <!--property值需要与类中属性对应 column="c_id" 为数据库内 列名 --> <id property="id" javaType="int" column="c_id" /> <!--类里其余一律为 <result />标签 要与实体类中属性值相同 --> <result property="c_name" javaType="String" column="c_name" /> <!-- 创建一对一关联 --> <!--property="" 值为类里外键属性类型 --> <association property="teacher" javaType="com.my.pojo.Teacher"> <id property="id" javaType="int" column="t_id"></id> <!--类里其余一律为 <result />标签 要与实体类中属性值相同 --> <result property="t_name" javaType="String" column="t_name" /> </association> </resultMap> </mapper> |
缓存工厂类
package com.my.daoimpl; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SuperDao { //读取配置mybatis总配置文件 private static Reader reader=null; private static SqlSessionFactory factory=null;
static{ try { reader = Resources.getResourceAsReader("mybatis.xml"); //创建缓存工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); factory = builder.build(reader); } catch (IOException e) { e.printStackTrace(); } }
public static SqlSession getSession(){ return factory.openSession(); } } |
带外联实体类
package com.my.pojo; public class Classes { int id; String c_name; // 包含类的属性 Teacher teacher; public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getC_name() { return c_name; } public void setC_name(String c_name) { this.c_name = c_name; } } |
实体类
package com.my.pojo; public class Teacher { int id; String t_name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getT_name() { return t_name; } public void setT_name(String t_name) { this.t_name = t_name; } } |
Dao层
package com.my.daoimpl; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SuperDao { //读取配置mybatis总配置文件 private static Reader reader=null; private static SqlSessionFactory factory=null;
static{ try { reader = Resources.getResourceAsReader("mybatis.xml"); //创建缓存工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); factory = builder.build(reader); } catch (IOException e) { e.printStackTrace(); } }
public static SqlSession getSession(){ return factory.openSession(); } } |
测试类
package com.my.test; import org.apache.ibatis.session.SqlSession; import com.my.daoimpl.SuperDao; import com.my.pojo.Classes; public class TestOenToOen { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //获取session对象 SqlSession session=SuperDao.getSession(); //第一个参数为要调用的方法为pojo实体类映射文件内mapper标签的namespace, //加上要调用的方法的ID //第二个参数为传入的值 Classes c=session.selectOne("com.my.pojo.ClassesMap.getClassesTeacherMap", 2); System.out.println("班级:"+c.getC_name()+"\t"+"老师:"+c.getTeacher().getT_name()); } } |