1. 程式人生 > >(二)mybatis學習之實現對mySQL資料庫的增刪查改

(二)mybatis學習之實現對mySQL資料庫的增刪查改

package com.loren.entity;

import org.apache.ibatis.type.Alias;


//@Alias()為實體類指定新的別名
@Alias("emp")
public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;



    public Employee() {
        super();
    }
    public Employee(Integer id, String lastName, String email, String gender) {
        super
(); this.id = id; this.lastName = lastName; this.email = email; this.gender = gender; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLastName() { return lastName; } public
void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getGender() { return gender; } public void setGender(String gender) { this
.gender = gender; } @Override public String toString() { return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]"; } }

建立EmployeeMapper.java介面

package com.loren.dao;

import com.loren.entity.Employee;

public interface EmployeeMapper {
    //查詢方法
    public Employee getEmpById(Integer id);

    //新增方法
    public void addEmp(Employee employee);

    //修改方法
    public void updateEmp(Employee employee);

    //刪除方法
    public void deleteEmp(Integer id);
}

建立EmployeeMapper.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">

<!-- namespace:名稱空間(指定為介面的全類名) 
    id:唯一標識
    resultType:返回值型別
    #{id}:從傳遞過來的引數中取出id值
-->
<mapper namespace="com.loren.dao.EmployeeMapper">
    <!-- databaseId:用來標識sql語句是在那個環境下使用的 -->
    <select id="getEmpById"  resultType="emp" databaseId="mysql">
    SELECT * FROM tb_employee where id = #{id}
    </select>

    <!-- 新增員工 -->
        <!-- 
            parameterType:引數型別,可以省略 
            mysql支援自增主鍵,mybatis用statement.getGenreatedKeys();
            獲取自增主鍵的值
                useGeneratedKeys="true";使用自增主鍵獲取主鍵值策略
                keyProperty:指定對應的主鍵屬性,也就是獲取到主鍵值後將其封裝給javaBean的哪個屬性
        -->
    <insert id="addEmp" parameterType="com.loren.entity.Employee" useGeneratedKeys="true"
    keyProperty="id">
        insert into tb_employee(last_name,email,gender) values(#{lastName},#{email},#{gender})
    </insert>

    <!-- Oracle不支援自增,使用序列來模擬自增的獲取 -->
    <!-- <insert id="addEmp" databaseId="oracle">

            keyProperty:查出的主鍵值封裝給javaBean的哪個屬性 
            order="BEFORE":當前sql在插入sql之前執行
                   AFTER:當前sql在插入sql之後執行
            resultType="Integer":查出資料的返回值型別
            執行順序:先執行查詢id的sql,查出id封裝給bean屬性,再執行插入sql

        <selectKey keyProperty="id" order="BEFORE" resultType="Integer">
            編寫查詢主鍵的sql語句
            select EMPLOYEE_SEQ.nextval from dual
        </selectKey> 
        插入時的主鍵是從序列中拿到的
        insert into tb_employee(id,last_name,email,gender) values(#{id},#{lastName},#{email},#{gender})
    </insert> -->
    <!-- 更新員工 -->
    <update id="updateEmp">
        update tb_employee
            set last_name=#{lastName},email=#{email},gender=#{gender}
            where id=#{id}
    </update>

    <!-- 刪除員工 -->
    <delete id="deleteEmp">
        delete from tb_employee where id=#{id}
    </delete>
</mapper>