Mybatis學習01--環境搭建和第一個程式
簡介
MyBatis 是一款優秀的持久層框架,它支援自定義 SQL、儲存過程以及高階對映。MyBatis 免除了幾乎所有的 JDBC 程式碼以及設定引數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和對映原始型別、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 物件)為資料庫中的記錄。
官網:https://mybatis.org/mybatis-3/zh/getting-started.html
環境搭建
MySQL
MySQL安裝目錄下 my.ini 檔案
[mysqld] #設定3306埠號 port=3306 #設定MySQL的安裝目錄 basedir=D:\MySQL\mysql-8.0.22-winx64\mysql-8.0.22-winx64 #設定MySQL資料庫的資料存放目錄 datadir=D:\MySQL\mysql-8.0.22-winx64\mysql-8.0.22-winx64\data #執行最大連線數 max_connections=200 #執行連線失敗的次數。這也是為了防止有人從該主機試圖攻擊資料庫系統 max_connect_errors=10 #服務端使用的字符集預設為utf-8 character-set-server=utf8 #設定時區 default-time_zone='+08:00' [mysql] #客戶端使用的字符集預設為utf8 default-character-set=utf8 [client] #客戶端預設埠號為3306 port=3306
新增環境變數
安裝
mysqld --install
初始化
mysqld --initialize-insecure --user=mysql
登入
mysql -uroot -p
修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
重新整理許可權
flush privileges;
重啟
net stop mysql
net start mysql
SQLyog 資料庫視覺化工具
https://sqlyog.en.softonic.com/download
Mybatis
maven新增依賴 pom.xml檔案中:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version> </dependency>
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>
第一個程式
建立資料庫
從SqlSessionFactory中獲取SqlSession
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//獲取SqlSession連線
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
利用SqlSession完成查詢操作
SqlSession session= MybatisUtil.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
List<User> users=mapper.selectUser();
SQL查詢是如何實現的呢?我們來看mybatis-config.xml檔案,XML 配置檔案中包含了對 MyBatis 系統的核心設定,包括獲取資料庫連線例項的資料來源(DataSource)以及決定事務作用域和控制方式的事務管理器(TransactionManager)。
<?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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
mappers 元素則包含了一組對映器(mapper),這些對映器的 XML 對映檔案包含了 SQL 程式碼和對映定義資訊。下面是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">
<mapper namespace="com.tang.UserMapper">
<select id="selectUser" resultType="com.tang.User">
select * from user
</select>
</mapper>
名稱空間namespace將對映器的xml檔案和介面繫結,在xml檔案中可以定義sql語句,注意select id要與繫結的介面的方法一一對應
public interface UserMapper {
public List<User> selectUser();
}
出現的問題
程式報錯:Could not find resource UserMapper.xml 找不到對映器資原始檔
原因:
-
路徑不正確
-
maven靜態資源過濾問題,在pom.xml新增:
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
參考:
https://blog.csdn.net/qq_33369905/article/details/106647283