(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>