(1)對數據庫的增刪改
1.1班級表信息接口類:
package edu.nf.mybatis3.dao; import edu.nf.mybatis3.entity.ClassInfo; import org.apache.ibatis.annotations.*; import java.util.List; /** * @Author lance * @Date 2018/9/18 0018 */ public interface ClazzInfo { /** * 保存班級信息 * @Insert 標明要插入的sql語句 * 主鍵策略 * 方式一:使用@Option注解實現主鍵自增長 * 方式二:使用@SelectKey注解生成UUID或sequence主鍵 * @SelectKey(keyProperty = "cid",resultType = "String.class", * before = true, * statement = "select uuid() from ducl") * 方式三:自己維護主鍵生成,不需要任何注解 * */ @Insert("insert into class_info(c_name) values(#{claName})") @Options(keyProperty = "cid" ,useGeneratedKeys = true) void saveInfo(ClassInfo classInfo); /** * 刪除班級信息 * 根據ID來指定刪除 * */ @Delete("delete from class_info where c_id = #{cid}") void deleteInfo(int sid); /** * 修改班級信息 * * */ @Update("update class_info set c_name = #{claName} where c_id = #{cid}") void updateInfo(ClassInfo classInfo); /** * 查詢單個班級信息 *(根據ID來查詢班級信息) * */ @Select("select c_id as cid ,c_name as claName from class_info where c_id = #{cid}") //@ResultType(ClassInfo.class)不強制要求,可寫可不寫,mybatis會根據反射自動得到返回的類型 ClassInfo getInfo(int sid); /** * 查詢所有的班級信息 * * */ @Select("select c_id as cid ,c_name as claName from class_info") List<ClassInfo> listClazzInfo(); }
1.2學生表信息接口類(關聯班級信息表)
package edu.nf.mybatis3.dao; import edu.nf.mybatis3.entity.StudentInfo; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; import java.util.List; /** * @Author lance * @Date 2018/9/18 0018 * 使用注解時在接口中標注 */ public interface StuInfo { /** *查詢單個學生信息 * 方試一:多個參數時,用param1,param2.。。代替 * */ @Select("select s_id ,s_name,s_age,s_sex,s_origin,s_tel,c_id from stu_info where s_name = #{param1} and s_sex = #{param2}") @ResultMap("edu.nf.mybatis3.dao.StuInfo.StuMap") StudentInfo findStudent(String name,String sex); /** *查詢單個學生信息 * 方試二:多個參數時,用注解@Param映射 * */ @Select("select s_id ,s_name,s_age,s_sex,s_origin,s_tel,c_id from stu_info where s_name = #{name} and s_sex = #{sex}") @ResultMap("edu.nf.mybatis3.dao.StuInfo.StuMap") StudentInfo findStudent2(@Param("name") String name,@Param("sex") String sex); /** *查詢所有的學生信息 * */ @Select("select s_id ,s_name,s_age,s_sex,s_origin,s_tel,c_id from stu_info") @ResultMap("edu.nf.mybatis3.dao.StuInfo.StuMap") List<StudentInfo> listStuInfo(); /** * 聯表查詢單個學員的信息和班級的信息 *(根據id來查詢) * @ResultMap指定mapper下的resultMap的id名(完整包名加ID名) * */ @Select("select s_id ,s_name,s_age,s_sex,s_origin,s_tel,c.c_id,c_name from stu_info s left join class_info c on s.c_id = c.c_id where s_id =#{sid}") @ResultMap("edu.nf.mybatis3.dao.StuInfo.StuMap") StudentInfo getStuInfo(int sid); }
說明:如果實體中關聯了其他的實體類,為了方便映射,我們都會建一個mapper的xml配置來處理實體的映射關系,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="edu.nf.mybatis3.dao.StuInfo"> <resultMap id="StuMap" type="studentInfo"> <id property="sid" column="s_id"></id> <result property="stuName" column="s_name"/> <result property="age" column="s_age"/> <result property="sex" column="s_sex"/> <result property="orgin" column="s_origin"/> <result property="tel" column="s_tel"/> <association property="clazz" resultMap="clazzMap"/> </resultMap> <resultMap id="clazzMap" type="classInfo"> <id property="cid" column="c_id"/> <result property="claName" column="c_name"/> </resultMap> </mapper>
