獲取Java的MyBatis框架項(xiàng)目中的SqlSession的方法
從XML中構(gòu)建SqlSessionFactory
從XML文件中構(gòu)建SqlSessionFactory的實(shí)例非常簡單。這里建議你使用類路徑下的資源文件來配置.
String resource = "org/mybatis/example/Configuration.xml"; Reader reader = Resources.getResourceAsReader(resource); sqlMapper = new SqlSessionFactoryBuilder().build(reader);
XML配置文件包含對(duì)MyBatis系統(tǒng)的核心設(shè)置,包含獲取數(shù)據(jù)庫連接實(shí)例的數(shù)據(jù)源和決定事務(wù)范圍和控制的事務(wù)管理器。如例:
<?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>
當(dāng)然,在XML配置文件中還有很多可以配置的,上面的示例指出的則是最關(guān)鍵的部分。
從SqlSessionFactory中獲取SqlSession
現(xiàn)在,我們已經(jīng)知道如何獲取SqlSessionFactory對(duì)象了,基于同樣的啟示,我們就可以獲得SqlSession的實(shí)例了。SqlSession對(duì)象完全包含以數(shù)據(jù)庫為背景的所有執(zhí)行SQL操作的方法。你可以用SqlSession實(shí)例來直接執(zhí)行已映射的SQL 語句。例如:
SqlSession session = sqlMapper.openSession();
try{
Blog blog = (Blog)session.selectOne("org.mybatis.example.BlogMapper.selectBlog",101);
}finally{
session.close();
}
現(xiàn)在有一種更簡潔的方法。使用合理描述參數(shù)和SQL語句返回值的接口(比如BlogMapper.class),這樣現(xiàn)在就更簡單,更安全的代碼,沒有容易發(fā)生的字符串文字和轉(zhuǎn)換的錯(cuò)誤。例如:
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
}finally{
session.close();
}
探究已映射的SQL語句
這里給出一個(gè)基于XML映射語句的示例,這些語句應(yīng)該可以滿足上述示例中SqlSession對(duì)象的調(diào)用。
<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
在命名空間“com.mybatis.example.BlogMapper”中,它定義了一個(gè)名為“selectBlog”的映射語句,這樣它允許你使用完全限定名“org.mybatis.example.BlogMapper.selectBlog”來調(diào)用映射語句,我們下面示例中的寫法也就是這樣的。
Blog blog = (Blog)session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
但下面的調(diào)用更有優(yōu)勢:
映射接口對(duì)應(yīng)映射xml文件的命令空間,接口方法對(duì)應(yīng)映射xml文件中定義的SQL映射的ID。???????????
BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101);
首先它不是基于文字的,那就更安全了。第二,如果你的IDE有代碼補(bǔ)全功能,那么你可以利用它來操縱已映射的SQL語句。第三,不需要強(qiáng)制類型轉(zhuǎn)換,同時(shí)BlogMapper接口可以保持簡潔,返回值類型很安全(參數(shù)類型也很安全)。
相關(guān)文章
淺談java多態(tài)的實(shí)現(xiàn)主要體現(xiàn)在哪些方面
下面小編就為大家?guī)硪黄獪\談java多態(tài)的實(shí)現(xiàn)主要體現(xiàn)在哪些方面。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
OpenCV Java實(shí)現(xiàn)人臉識(shí)別和裁剪功能
這篇文章主要為大家詳細(xì)介紹了OpenCV Java實(shí)現(xiàn)人臉識(shí)別和裁剪功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
你知道在Java中Integer和int的這些區(qū)別嗎?
最近面試,突然被問道,說一下Integer和int的區(qū)別.額…可能平時(shí)就知道寫一些業(yè)務(wù)代碼,包括面試的一些Spring源碼等,對(duì)于這種特別基礎(chǔ)的反而忽略了,導(dǎo)致面試的時(shí)候突然被問到反而不知道怎么回答了.哎,還是乖乖再看看底層基礎(chǔ),順帶記錄一下把 ,需要的朋友可以參考下2021-06-06
Java Grpc實(shí)例創(chuàng)建負(fù)載均衡詳解
這篇文章主要介紹了Java Grpc實(shí)例創(chuàng)建負(fù)載均衡詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Java中的HashMap和ConcurrentHashMap區(qū)別和適用場景
HashMap和ConcurrentHashMap在對(duì)null值的處理、線程安全性、性能等方面存在顯著的區(qū)別,HashMap允許鍵和值為null,適用于單線程環(huán)境下的數(shù)據(jù)存儲(chǔ)和查詢場景;而ConcurrentHashMap不允許鍵和值為null,適用多線程環(huán)境下的數(shù)據(jù)存儲(chǔ)和查詢場景,具有線程安全性和較高的并發(fā)性能2025-01-01
SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡單的鏈路追蹤功能
Spring Boot默認(rèn)使用LogBack日志系統(tǒng),并且已經(jīng)引入了相關(guān)的jar包,所以我們無需任何配置便可以使用LogBack打印日志。這篇文章主要介紹了SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡單的鏈路追蹤功能,需要的朋友可以參考下2019-10-10

