• 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>
  • 相关阅读:
    2021-06-22 总结
    【每日一题】13. 罗马数字转整数
    【每日一题】12. 整数转罗马数字
    【每日一题】1269. 停在原地的方案数
    【每日一题】1310. 子数组异或查询
    【每日一题】1734. 解码异或后的排列
    【每日一题】872. 叶子相似的树
    【每日一题】1482. 制作 m 束花所需的最少天数
    【每日一题】1723. 完成所有工作的最短时间
    【每日一题】1486. 数组异或操作
  • 原文地址:https://www.cnblogs.com/gepuginy/p/9674417.html
Copyright © 2020-2023  润新知