Mybatis 環境搭建
很多新人在一開始學習mybatis 的時候雖然看懂開發者文檔不是什麼難事,但是在搭建環境的時候就總會出現一些莫名其妙的錯誤信息,比如說我自己。所以我現在整理了一下步驟,做一個記錄,也提供給一些初學者做一個參考,我使用的是IDEA開發工具。
1. 新建Maven項目
然後:
然後點擊 finish 就好了:
新建的項目工程結構如圖;
2. 配置文件
-
項目已經創建成功,既然是 Mybatis 項目,那麼久需要引入Mybatis的依賴:
下載Mybatis 的依賴,並引入;
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
效果如下:
Mybatis 是持久層,所以需要mysql的驅動 依賴
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
-
依賴引入之後,接下來就是要進行配置了:
這裏參考Mybatis 官方文檔的 配置文件格式:
在 resource 目錄下新建一個 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>
-
修改 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="com.mysql.cj.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UFT-8"/>
<property name="username" value="xxxx"/>
<property name="password" value="xxxxxx"/>
<!-- 這裏記得改成自己數據庫對應的參數-->
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
</mappers>
</configuration>
3. 建立table 映射的實體
即創建一個實體類:
這個實體類的字段都是跟數據庫中表的字段保持一致的:
package cn.kingshion.entity;
public class Users {
int id;
String name;
String password;
public Users() {
}
public Users(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
4. 建立接口,設計可操作的方法
在這裏先創建一個接口類,然後定義一個數據庫查詢的方法:(當然接口裏面的都是抽象方法,在mybatis 中的一個好處就是我們不要額外的去寫一個實現類去實現這個接口,並且寫很多冗餘的CRUD 語句,可以這麼理解 Mybatis 中所有的操作都是基於接口和映射文件進行配置的)
package cn.kingshion.dao;
import java.util.List;
public interface UsersDao {
public<Users> List getUsers();
}
5. 創建Mapper映射文件:
- 在 resource 文件夾下 新建映射文件 UsersMapper.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="cn.kingshion.dao.UsersDao">
<select id="getUsers" resultType="cn.kingshion.entity.Users">
select * from users
</select>
</mapper>
注意:
前面的 namespace 中寫的是接口的路徑;
select 中 id 是 接口中的方法;
resultType 是 實體類的返回類型;
select * from users 是數據庫查詢語句;
6. 在 Mybatis 配置文件 mybatis-config.xml 中 添加 Mapper 的配置
- 將之前寫的 UsersMapper.xml 文件添加到 mybatis-config.xml 文件的 mappers 中: ·
7. 完成並測試
這個時候已經配置完成了,接下來就是測試自己的Mybatis到底有沒有配置成功了:
直接在 Maven的 test 文件夾下新建測試類:
package cn.kingshion;
import cn.kingshion.dao.UsersDao;
import cn.kingshion.entity.Users;
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;
import java.util.List;
public class MybatisTest {
public static void main(String[] args) {
// String resource = "org/mybatis/example/mybatis-config.xml";
// 找到 mybatis-config.xml 文件路徑,默認的根路徑:resource文件夾
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
// 創建一個流來讀取配置文件
inputStream = Resources.getResourceAsStream(resource);
// 使用下面兩句 語句跟第三句的效果是一樣的。
// SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// SqlSessionFactory factory = builder.build(inputStream);
// 通過inputStream 加載配置文件,然後創建 SqlSessionFactoryBuilder
// 再通過 SqlSessionFactoryBuilder 創建一個 工廠 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 用工廠建立 session 對象
SqlSession session = sqlSessionFactory.openSession();
// 使用 映射進行數據庫操作
UsersDao usersMapper = session.getMapper(UsersDao.class);
List<Users> list = usersMapper.getUsers();
for (Users user : list) {
System.out.println(user);
}
// 記得關閉會話 和io流
session.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
8. 使用註解方式
-
修改 mybatis-config.xml 配置文件的mapper 映射
<mappers> <!-- 使用非註解方式 指向映射文件 --> <!-- <mapper resource="cn/kingshion/dao/UsersMapper.xml"/>--> <!-- 使用註解方式 指向接口 --> <mapper class="cn.kingshion.dao.UsersDao"/> </mappers>
-
在接口裏面使用註解的方式:
package cn.kingshion.dao; import cn.kingshion.entity.Users; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UsersDao { @Select("select * from users where id =1") public List<Users> getUsers(); }
-
最後測試