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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM