第一個Mybatis
思路:搭建環境-->匯入Mybatis-->撰寫代碼-->測驗
1、搭建環境
新建maven工程,配置xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<!--匯入依賴-->
<dependencies>
<!--mysql驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 撰寫mybatis的核心組態檔(在resources檔案夾下創建mybatis-config.xml)
Mysql8.0以上url還得設定時區setTimeZone
<?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核心組態檔-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--資料源-->
<dataSource type="POOLED">
<property name="driver" value="https://www.cnblogs.com/spang/p/com.mysql.jdbc.Driver"/>
<property name="url"
value="https://www.cnblogs.com/spang/p/jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncode=UTF-8"/>
<property name="username" value="https://www.cnblogs.com/spang/p/root"/>
<property name="password" value="https://www.cnblogs.com/spang/p/123456"/>
</dataSource>
</environment>
</environments>
<!--每一個Mapper.xml都需要在mybatis核心組態檔中注冊!-->
<mappers>
<mapper resource="org/mybatis/example/UserDaoMapper.xml"/>
</mappers>
</configuration>
2、撰寫代碼
-
物體類
package com.spong.pojo; public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } 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 getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } } -
Mapper介面
public interface UserMapper { List<User> getUserList(); } -
介面實作類由原來的UserDaoImpl轉變為一個Mapper組態檔 UserMapper.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"> <!--namespace系結一個對應的Dao/Mapper介面--> <mapper namespace="com.spong.dao.UserDao"> <select id="getUserList" resultType="com.spong.pojo.User"> select * from mybatis.user </select> </mapper> -
MybatisUtils工具類
將sqlSessionFactory的創建以及獲取SqlSession的方法封裝為工具類,實際請求中使用MybatisUtils工具類的靜態方法直接獲得SQLSession實體,
package com.spong.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 MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //獲取SqlSessionFactory物件 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //獲取SQLSession實體,SQLSession中完全包含了面向資料庫執行SQL命令所需的所有方法 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
3、測驗
junit測驗
@Test
public void test(){
//第一步,獲取SqlSession物件
SqlSession sqlSession = MybatisUtils.getSqlSession();
//第二步,執行sql
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
//關閉SqlSession
sqlSession.close();
}
例外:org.apache.ibatis.binding.BindingException: Type interface com.spong.dao.UserDao is not known to the MapperRegistry.
需要在核心組態檔中注冊mappers
<!--每一個Mapper.xml檔案都要在核心組態檔中注冊-->
<mappers>
<mapper resource="com/spong/dao/UserMapper.xml"/>
</mappers>
maven資源匯出問題(測驗時發現mybatis.xml檔案未找到):
需要在pom.xml中配置
<!--在build中配置resources,防止資源匯出失敗的問題-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
如有錯誤,歡迎大佬指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/89875.html
標籤:Java
上一篇:SpringBoot進階教程(六十三)Jasypt組態檔加密
下一篇:Mybatis配置決議
