1. 程式人生 > >mybatis學習筆記(四)- MyBatis 對映檔案(增刪改)

mybatis學習筆記(四)- MyBatis 對映檔案(增刪改)

1. MyBatis 對映檔案章節的工程目錄

image

對映檔案指導著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. 建立全域性配置檔案(請參照以前的筆記自行書寫)

  1. 配置連線資料庫相關環境
  2. 將我們寫好的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();
		}
		
	}