Mybatis原理和SqlSession
Mybatis 環境搭建
1.下載mybatis
在github上下載
2.匯入依賴
測試相關的包: junit hamcrest
日誌相關的包:log4j-1.2.16 slf4-api slf4j-log4j12
資料庫相關jar包: mysql-connector
Mybatis先關jar包: mybaits-3.4.5
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--日誌包-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
3.建立log4j檔案
(1)首先建立resources包(src\main\resources
)
(2)在resources包下建立log4j.properties檔案
(3)配置log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.Mybatis操作流程
(1)mybatis開發流程
》1 建立SqlSessionFactoryBuilder物件
》2 建立SqlSessionFactory物件
》3 載入SqlMapConfig.xml配置檔案
》4 建立SqlSession物件
》5 執行SqlSession物件執行刪除
》6 列印結果
》7 釋放資源
詳細程式碼
//建立SqlSessionFactoryBuilder物件
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//建立SqlSessionFactor物件
InputStream inputStream=TestMybatis01.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);//載入檔案,輸入流
//建立SqlSession物件
SqlSession sqlSession=sqlSessionFactory.openSession();
System.out.println(sqlSession);
//執行sql語句
User user=new User();
user.setId(8);
user.setName("xjj");
sqlSession.insert("com.xjj.bean.User.insetUser",user);
sqlSession.commit();//mybatis的session不會自動提交,必須手動提交
sqlSession.close();
mybatis核心配置檔案
(1)建立SqlMapConfig.xml檔案
在src\main\resources下
,建立方法和log4j相同
(2)配置SqlMapConfig.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">
<!--dtd是對xml配置標籤與屬性的約束-->
<configuration>
<!-- environments環境 開發環境,生產環境-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc的事務管理 -->
<transactionManager type="JDBC"/>
<!-- dataSource Mybatis自帶資料來源連線池-->
<dataSource type="POOLED">
<!-- 四大資訊 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/user?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 配置多個對映檔案-->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
(3)對映檔案
在src\main\resources下建立UserMapper.xml檔案
建立方法和上述兩個檔案相同
(4)配置對映檔案
<?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">
<!-- map的約束檔案-->
<!-- namespace 名稱空間 防止id衝突找不到正確的id-->
<!-- id Mybatis是將sql語句寫在xml檔案中,以後session根據namesapce.id 合在一起獲取sql-->
<!-- 在jdbc中,sql語句使用?作佔位符,但在mybatis #{id}-->
<mapper namespace="com.xjj.bean.User">
<delete id="deleteById" parameterType="int" >
delete from user where id = #{id}
</delete>
<insert id="insetUser" >
insert into user (id,name) values (#{id},#{name})
</insert>
<select id="findUserById" resultType="com.xjj.bean.User" >
select * from user where name = #{name}
</select>
</mapper>
MySessionUtil
1.靜態程式碼快
2.getSession()方法
建立MySessionUtil.java
src\main\com\xjj\util\MySessionUtil.java
package com.xjj.util;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class MysqlSessionUtil {
private static SqlSessionFactory sessionFactory;
//static 靜態程式碼只會執行一次
static{
// 建立SqLSessionFactoryBuilder物件
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//建立SqlSessionFactory物件
InputStream inputStream =MysqlSessionUtil.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
sessionFactory=sqlSessionFactoryBuilder.build(inputStream);//參1 輸入流,載入SqlMapConfig.xml檔案
}
public static SqlSession getSession(){
//建立SqlSession物件
SqlSession sqlSession=sessionFactory.openSession();
return sqlSession;
}
}
建立TestMybatis02()檔案
src\main\test\java\com\xjj\pack01\TestMybatis02
package com.xjj.pack01;
import com.xjj.util.MysqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class TestMybatis02 {
@Test
public void test01(){
//建立Sqlsession物件,呼叫getSession方法
SqlSession sqlSession = MysqlSessionUtil.getSession();
System.out.println(sqlSession);
sqlSession.delete("com.xjj.bean.User.deleteById",1);//刪除id編號為1的user的所有資訊
sqlSession.commit();//mybatis不會自動提交session
sqlSession.close();//釋放資源
}
}
相關文章
- mybatis底層原理學習(一):SqlSessionFactory和SqlSession的建立過程MyBatisSQLSession
- MyBatis sqlSession概要梳理MyBatisSQLSession
- Mybatis的核心——SqlSession解讀MyBatisSQLSession
- Mybatis原始碼解析4——SqlSessionMyBatis原始碼SQLSession
- MyBatis-06-Spring的SqlSession和原始區別MyBatisSpringSQLSession
- 手寫自己的MyBatis框架-SqlSessionMyBatis框架SQLSession
- Mybatis詳解(二) sqlsession的建立過程MyBatisSQLSession
- Mybatis環境搭建以及案例 SqlSession物件的方法MyBatisSQLSession物件
- Mybatis【2.2】-- Mybatis關於建立SqlSession原始碼分析的幾點疑問?MyBatisSQLSession原始碼
- 【java深入學習第1章】深入探究 MyBatis-Spring 中 SqlSession 的原理與應用JavaMyBatisSpringSQLSession
- 深入淺出MyBatis:MyBatis解析和執行原理MyBatis
- MyBatis的解析和執行原理MyBatis
- 精盡MyBatis原始碼分析 - SqlSession 會話與 SQL 執行入口MyBatis原始碼SQLSession會話
- MyBatis原理MyBatis
- Mybatis工作原理MyBatis
- MyBatis原理解析MyBatis
- MyBatis介面繫結原理MyBatis
- 面試被問MyBatis原理?面試MyBatis
- 一個寧靜祥和沒有bug的下午和SqlSession的故事SQLSession
- MyBatis框架原理3:快取MyBatis框架快取
- MyBatis-07-外掛原理MyBatis
- MyBatis動態代理執行原理MyBatis
- mybatis系列第1篇:框架原理MyBatis框架
- [Spring]MyBatis的執行原理SpringMyBatis
- 【Mybatis原始碼解析】- JDBC連線資料庫的原理和操作MyBatis原始碼JDBC資料庫
- MyBatis中#{}和${}MyBatis
- 淺析MyBatis的動態代理原理MyBatis
- 從原始碼角度分析 MyBatis 工作原理原始碼MyBatis
- simple-mybatis的原理及實現MyBatis
- 「Mybatis系列」Mybatis開發方式和配置MyBatis
- 深入淺出MyBatis:JDBC和MyBatis介紹MyBatisJDBC
- 面試官:你分析過mybatis工作原理嗎?面試MyBatis
- 深入原始碼理解Spring整合MyBatis原理原始碼SpringMyBatis
- mybatis原理,配置介紹及原始碼分析MyBatis原始碼
- 【MyBatis原始碼分析】外掛實現原理MyBatis原始碼
- springboot~mybatis-pagehelper原理與使用Spring BootMyBatis
- Mybatis 一級快取和二級快取原理區別 (圖文詳解)MyBatis快取
- 兩張圖徹底搞懂MyBatis的Mapper原理!MyBatisAPP