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>
<settings>
<!--打开二级缓存总闸-->
<setting name="cacheEnabled" value="true"></setting>
<!--启用延迟加载-->
<setting name="lazyLoadingEnabled" value="true"></setting>
<!--最新版本默认值为false,旧版本默认值为true;这里是旧版本,设置为false,表示只有调用关联对象时候才会加载关联对象-->
<setting name="aggressiveLazyLoading" value="false"></setting>
</settings>
<!--给类取别名-->
<typeAliases>
<typeAlias type="com.seecen.pojo.Trainee" alias="Trainee" />
<typeAlias type="com.seecen.pojo.Clazz" alias="Clazz" />
<typeAlias type="com.seecen.pojo.Teacher" alias="Teacher" />
</typeAliases>
<!--环境-->
<environments default="oracledb">
<environment id="oracledb">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="pooled">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"></property>
<property name="username" value="scott"></property>
<property name="password" value="wangxinyu"></property>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="trainee.xml"></mapper>
<mapper resource="clazz.xml"></mapper>
<mapper resource="teacher.xml"></mapper>
</mappers>
</configuration>
trainee.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="trainee">
<cache/>
<resultMap id="traineeMap2" type="com.seecen.mybatis.pojo.Trainee">
<id column="trainee_id" property="traineeId"></id>
<result property="traineeName" column="trainee_name"></result>
<result property="gender" column="gender"></result>
<result property="birthday" column="birthday"></result>
<!-- 多对一 -->
<association select="clazz.queryClazzById" property="clazz" column="clazz_id" javaType="clazz"></association>
<!--一对多-->
<collection select="teacher.queryTeacherById" property="teachers" ofType="teacher" column="trainee_id" javaType="list"></collection>
</resultMap>
<resultMap id="traineeMap" type="com.seecen.mybatis.pojo.Trainee">
<id column="trainee_id" property="traineeId"></id>
<result property="traineeName" column="trainee_name"></result>
<result property="gender" column="gender"></result>
<result property="birthday" column="birthday"></result>
<result property="clazz.clazzId" column="clazz_id"></result>
<result property="clazz.clazzName" column="clazz_name"></result>
</resultMap>
<sql id="globalQuery">
select trainee_id traineeId,trainee_name traineeName,birthday,gender,clazz_id "clazz.clazzId"
</sql>
<insert id="add" parameterType="com.seecen.mybatis.pojo.Trainee">
INSERT INTO t_trainee VALUES(seq_t_trainee.nextval,#{traineeName},#{birthday},#{gender},#{clazz.clazzId})
</insert>
<update id="edit" parameterType="com.seecen.mybatis.pojo.Trainee">
UPDATE t_trainee SET TRAINEE_NAME = #{traineeName} WHERE TRAINEE_ID = #{traineeId}
</update>
<delete id="del" parameterType="int">
Delete from t_trainee where trainee_id = #{id}
</delete>
<select id="list" resultMap="traineeMap" parameterType="string">
select t.*,clz.clazz_name from t_trainee t left join t_clazz clz on t.clazz_id = clz.clazz_id where t.trainee_name like '%' || #{string} || '%'
</select>
<select id="query" resultType="trainee" parameterType="trainee">
<include refid="globalQuery"></include>
from t_trainee
<where>
<if test="traineeName != null and traineeName != ''">
and trainee_name like '%' || #{traineeName} || '%'
</if>
<if test="gender != null and gender != ''">
and gender = #{gender}
</if>
</where>
</select>
<select id="search" resultMap="traineeMap2">
select * from t_trainee
</select>
</mapper>