(二)mybatis學習之實現對mySQL資料庫的增刪查改
阿新 • • 發佈:2019-02-03
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>