mybatis入門程式
阿新 • • 發佈:2021-08-07
mybatis入門程式
準備工作
在入門學習中已經建立好maven專案,並匯入相關依賴,接下來就可以利用mybatis對資料庫進行操作
資料庫包含兩個表:
入門程式一:按id查詢使用者
建立實體類
在pojo層建立一個Employee實體類
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
測試結果
對比資料庫
成功!