mybatis入門程式

九尾。發表於2021-08-07

mybatis入門程式

準備工作

入門學習中已經建立好maven專案,並匯入相關依賴,接下來就可以利用mybatis對資料庫進行操作
資料庫包含兩個表:
image
image
image

入門程式一:按id查詢使用者

建立實體類

在pojo層建立一個Employee實體類
image

package com.neuedu.pojo;
import java.util.Date;

public class Employee {
	private Integer id;
	private String loginName;
	private String password;
	private String name;
	private Date hiredate;
	private String email;
	private Integer status;
	private String photoPath;
	private Integer deptId;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getHiredate() {
		return hiredate;
	}
	public void setHiredate(Date hiredate) {
		this.hiredate = hiredate;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public String getPhotoPath() {
		return photoPath;
	}
	public void setPhotoPath(String photoPath) {
		this.photoPath = photoPath;
	}
	public Integer getDeptId() {
		return deptId;
	}
	public void setDeptId(Integer deptId) {
		this.deptId = deptId;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", loginName=" + loginName + ", password=" + password + ", name=" + name
				+ ", hiredate=" + hiredate + ", email=" + email + "]";
	}
}

建立對映檔案

可以直接在resources下建立xml對映檔案,EmpMapper.xml
如果idea識別不出xml檔案,可以看IDEA建立Mapper.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="">
</mapper>

根標籤mapper的namespace屬性現在可以隨意給值 ,但當使用mapper代理方式開發時,有特定的取值。

sql語句

<select id="findEmpById" parameterType="int" resultType="com.neuedu.pojo.Employee">
        <!-- id就是這條語句的唯一標識,parameterType是員工id的屬性,resultType是返回型別,要把實體類的路徑寫完整 -->
        select * from tb_emp where id = #{value}
        <!-- 佔位符要使用#{} parameterType的型別如果為 簡單型別(基本型別和String),#{}中的值任意。-->
    </select>

測試
建立一個測試類

package com.neuedu.test;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.neuedu.pojo.Employee;
public class TestMybatis {
   @Test
    public void testFindById() throws Exception{

        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        sf = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = sf.openSession();
        Employee emp = session.selectOne("findEmpById", 3);
        System.out.println(emp.getName());
        session.close();
    }
}

查詢實質上呼叫的還是session,session呼叫完成後要關閉

InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
該語句引入了對映檔案,還需要由對映檔案去尋找sql語句所在的檔案EmpMapper.xml
所以要在SqlMapConfig.xml中引入EmpMapper.xml

image

測試結果

image

對比資料庫

image
成功

相關文章