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

