MyBatis學習筆記---入門
MyBatis學習筆記
一、資料庫與資料表的建立
1.建立資料庫
create database thymeleaf;
use thymeleaf;
2.建立資料表
create table tb_user( -> id int not null auto_increment, -> name varchar(20), -> password varchar(50), -> email varchar(50), -> primary key(id) -> )engine=innodb default charset=utf8;
3.插入測試資料
insert into tb_user
-> (name,password,email)
-> values('admin','admin','[email protected]');
二、建立Java專案
1.新建Java專案
2.在專案下建立User類,內容如下:
package com.sky.demo2.bean; public class User { private Integer id; private String name; private String password; private String email; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + ", cg=" + cg + '}'; } //省略其setter和getter方法 }
三、Mybatis入門
1.引入mybatis
要使用MyBatis,只需將mybatis-x.x.x.jar檔案置於classpath中即可。如果使用Maven來構建專案,則需將下面的dependency程式碼置於pom.xml檔案中
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
每個基於MyBatis的應用都是以一個SqlSessionFactory的例項為中心的。
本次學習採用將mybatis-x.x.x.jar檔案複製於classpath中,
在專案要根目錄下,建立lib目錄,將mybatis-3.4.6.jar和mysql-connector-java-5.1.44-bin.jar檔案複製到該目錄下,並新增到構建路徑中。
2.建立mybatis-config.xml檔案
每個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的例項為中心的。SqlSessionFactory 的例項可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置檔案或一個預先定製的 Configuration 的例項構建出 SqlSessionFactory 的例項。
從 XML 檔案中構建 SqlSessionFactory 的例項非常簡單,建議使用類路徑下的資原始檔進行配置。
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>
<properties resource="msqldatasource.properties"/>
<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="com/sky/demo/dao/AccountMapper.xml" />
-->
<package name="com.sky.demo2.dao"/>
</mappers>
</configuration>
其中properties,引入外部配置檔案,該檔案中主要配置資料庫的相關資訊,內容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/thymeleaf
username=root
password=123456
datasource部分,配置資料庫的連線資訊,從外部配置檔案中取得
部分,配置Mapper對映檔案的路徑,有兩種方式,一種是為每一個Mapper檔案配置,另一種是配置Mapper檔案的包路徑。分別如下
<mapper resource="com/sky/demo/dao/AccountMapper.xml" />
<package name="com.sky.demo2.dao"/>
3.建立SqlSessionFactory,並從中獲取SqlSession
為了實現該功能,採用工具類的方式實現,程式碼如下
package com.sky.demo2.util;
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 java.io.IOException;
import java.io.InputStream;
public class DBUtil {
private static SqlSessionFactory sqlSessionFactory;
static{
String resource="mybatis-config.xml";
try {
InputStream inputStream=Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
通過該類的的靜態方法getSession()來獲取到SqlSession
4.採用介面的方式建立Mapper對映
首先,建立一個介面,介面內容如下:
package com.sky.demo2.dao;
import com.sky.demo2.bean.User;
import java.util.List;
public interface UserMapper {
public User getUserById(int id);
public List<User> getUserByClassId(int id);
}
其次,建立Mapper的SQL對映檔案,內容如下:
<?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="com.sky.demo2.dao.UserMapper">
<resultMap id="userMap" type="com.sky.demo2.bean.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="password" property="password"/>
<result column="email" property="email"/>
</resultMap>
<select id="getUserById" resultMap="userMap">
select * from tb_user where id = #{id}
</select>
<select id="getUserByClassId" resultMap="userMap">
select * from tb_user where classid=#{id}
</select>
</mapper>
四、利用mybatis訪問查詢資料
package com.sky.demo2;
import com.sky.demo2.bean.ClassAndGrade;
import com.sky.demo2.bean.User;
import com.sky.demo2.dao.ClassAndGradeMapper;
import com.sky.demo2.dao.UserMapper;
import com.sky.demo2.util.DBUtil;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
UserMapper userMapper=session.getMapper(com.sky.demo2.dao.UserMapper.class);
User user=userMapper.getUserById(1);
System.out.println(user.toString());
}
}