開發Mybatis的環境搭建
一、導入jar架包。
mybatis-3.2.8.jar
mysql-connector-java-5.1.7-bin.jar
c3p0-0.9.1.2.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
mybatis-3.2.8.jar
mybatis-spring-1.2.2.jar
mysql-connector-java-5.1.7-bin.jar(連接MySQL數據庫的架包,使用什麼數據庫,就用什麼架包)
二、新建持久化類和數據表
- import java.util.Date;
- public class Student {
- private Integer id;
- private String lastName;
- private String email;
- private Date birth;
- // 提供對應的set/get方法
- 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 Date getBirth() {
- return birth;
- }
- public void setBirth(Date birth) {
- this.birth = birth;
- }
- //有參無參構造器
- public Student(Integer id, String lastName, String email, Date birth) {
- super();
- this.id = id;
- this.lastName = lastName;
- this.email = email;
- this.birth = birth;
- }
- public Student() {
- super();
- }
- }
import java.util.Date;
public class Student {
private Integer id;
private String lastName;
private String email;
private Date birth;
// 提供對應的set/get方法
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 Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
//有參無參構造器
public Student(Integer id, String lastName, String email, Date birth) {
super();
this.id = id;
this.lastName = lastName;
this.email = email;
this.birth = birth;
}
public Student() {
super();
}
}
2、在數據庫中,建立數據表
- create database MybatisDB charset=utf8;
- use MybatisDB;
- CREATE TABLE students(
- id INT AUTO_INCREMENT PRIMARY KEY,
- last_name VARCHAR(20),
- email VARCHAR(20),
- birth DATE
- )charset=utf8;
create database MybatisDB charset=utf8;
use MybatisDB;
CREATE TABLE students(
id INT AUTO_INCREMENT PRIMARY KEY,
last_name VARCHAR(20),
email VARCHAR(20),
birth DATE
)charset=utf8;
三、加入 MyBatis 配置文件
加入位置:創建的位置(src下)
文件的名稱(一般是mybatis-config.xml)
mybatis-config.xml內容:
- <?xml version=“1.0” encoding=“UTF-8” ?>
- <!DOCTYPE configuration PUBLIC
- “-//mybatis.org//DTD Config 3.0//EN”
- “http://mybatis.org/dtd/mybatis-3-config.dtd”>
- <configuration>
- <environments default=“development”>
- <environment id=“development”>
- <transactionManager type=“JDBC” />
- <dataSource type=“POOLED”>
- <property name=“driver” value=“$${driver}” />
- <property name=“url” value=“${url}” />
- <property name=“username” value=“${username}” />
- <property name=“password” value=“${password}” />
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource=“org/mybatis/example/BlogMapper.xml” />
- </mappers>
- </configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml" />
</mappers>
</configuration>
四、加入 MyBatis 映射文件
- <?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, 用來唯一的標識該 配置文件. 和 id 有相同的作用 –>
- <mapper namespace=“com.zuxia.model.StudentMapper”>
- <!– 配置一個 select 節點,id:用於表示該節點,用於調用該節點;resultType:返回的類型是什麼 –>
- <select id=“selectStudent” resultType=“com.zuxia.model.Student”>
- <!–可以使用別名解決類中的屬性名和表中的列名不一致的問題–>
- select id,last_name lastName,email,birth from students where id = #{id}
- </select>
- </mapper>
<?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, 用來唯一的標識該 配置文件. 和 id 有相同的作用 -->
<mapper namespace="com.zuxia.model.StudentMapper">
<!-- 配置一個 select 節點,id:用於表示該節點,用於調用該節點;resultType:返回的類型是什麼 -->
<select id="selectStudent" resultType="com.zuxia.model.Student">
<!--可以使用別名解決類中的屬性名和表中的列名不一致的問題-->
select id,last_name lastName,email,birth from students where id = #{id}
</select>
</mapper>
五、5、通過 MyBatis API 操作數據表
新建一個測試類或Main方法
- String resource = “mybatis-config.xml”;
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- //獲取SqlSession
- SqlSession openSession = sqlSessionFactory.openSession();
- try {
- //第一個參數:StudentMapper的namespace + 節點的id值
- //第二個參數:要查詢的是哪條記錄
- Student student = openSession.selectOne(”com.zuxia.model.StudentMapper.selectStudent”,50);
- System.out.println(student);
- }finally{
- //關閉
- openSession.close();
- }
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//獲取SqlSession
SqlSession openSession = sqlSessionFactory.openSession();
try {
//第一個參數:StudentMapper的namespace + 節點的id值
//第二個參數:要查詢的是哪條記錄
Student student = openSession.selectOne("com.zuxia.model.StudentMapper.selectStudent",50);
System.out.println(student);
}finally{
//關閉
openSession.close();
}