Mybatis用注解方式来操作mysql数据库

(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>
原文地址:https://www.cnblogs.com/gepuginy/p/9674417.html