mybatis學習筆記(四)- MyBatis 對映檔案(增刪改)
阿新 • • 發佈:2018-12-29
1. MyBatis 對映檔案章節的工程目錄
對映檔案指導著MyBatis如何進行資料庫增刪改查, 有著非常重要的意義
2. 增刪改的使用
2.1. 建立 Employee 類
注意:如果給類建立有參構造器時,一定給它一個無參構造器
package www.xq.mybatis.bean;
import org.apache.ibatis.type.Alias;
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 + "]";
}
}
2.2. 建立 EmployeeMapper 的介面
public interface EmployeeMapper {
public void addEmp(Employee employee);
public boolean updateEmp(Employee employee);
public void deleteEmpById(Integer id);
}
2.3.建立對映檔案 EmployeeMapper.xml
<mapper namespace="www.xq.mybatis.dao.EmployeeMapper">
<!-- public void addEmp(Employee employee); -->
<!-- parameterType:引數型別,可以省略,
獲取自增主鍵的值:
mysql支援自增主鍵,自增主鍵值的獲取,mybatis也是利用statement.getGenreatedKeys();
useGeneratedKeys="true";使用自增主鍵獲取主鍵值策略
keyProperty;指定對應的主鍵屬性,也就是mybatis獲取到主鍵值以後,將這個值封裝給javaBean的哪個屬性
-->
<insert id="addEmp" parameterType="www.xq.mybatis.bean.Employee"
useGeneratedKeys="true" keyProperty="id" databaseId="mysql">
insert into tbl_employee(last_name,email,gender)
values(#{lastName},#{email},#{gender})
</insert>
<!-- public boolean updateEmp(Employee employee); -->
<update id="updateEmp">
update tbl_employee
set last_name=#{lastName},email=#{email},gender=#{gender}
where id=#{id}
</update>
<!-- public void deleteEmpById(Integer id); -->
<delete id="deleteEmpById">
delete from tbl_employee where id=#{id}
</delete>
</mapper>
2.4. 建立全域性配置檔案(請參照以前的筆記自行書寫)
- 配置連線資料庫相關環境
- 將我們寫好的sql對映檔案(EmployeeMapper.xml)一定要註冊到全域性配置檔案
2.5. 測試(建立單元測試類 MyBatisTest)
public class MyBatisTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* 測試增刪改
* 1、mybatis允許增刪改直接定義以下型別返回值
* Integer、Long、Boolean、void
* 2、我們需要手動提交資料
* sqlSessionFactory.openSession();===》手動提交
* sqlSessionFactory.openSession(true);===》自動提交
* @throws IOException
*/
@Test
public void test03() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
//1、獲取到的SqlSession不會自動提交資料
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
//測試新增
Employee employee = new Employee(null, "jerry4",null, "1");
mapper.addEmp(employee);
//測試是否獲取主鍵值
System.out.println(employee.getId());
//測試修改
//Employee employee = new Employee(1, "Tom", "[email protected]", "0");
//boolean updateEmp = mapper.updateEmp(employee);
//System.out.println(updateEmp);
//測試刪除
//mapper.deleteEmpById(2);
//2、手動提交資料
openSession.commit();
}finally{
openSession.close();
}
}