從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配置文件包含對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對象了,基于同樣的啟示,我們就可以獲得SqlSession的實(shí)例了。SqlSession對象完全包含以數(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)換的錯誤。例如:
SqlSession session = sqlSessionFactory.openSession(); try { BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); }finally{ session.close(); } 探究已映射的SQL語句
這里給出一個基于XML映射語句的示例,這些語句應(yīng)該可以滿足上述示例中SqlSession對象的調(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”中,它定義了一個名為“selectBlog”的映射語句,這樣它允許你使用完全限定名“org.mybatis.example.BlogMapper.selectBlog”來調(diào)用映射語句,我們下面示例中的寫法也就是這樣的。
Blog blog = (Blog)session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101); 但下面的調(diào)用更有優(yōu)勢:
映射接口對應(yīng)映射xml文件的命令空間,接口方法對應(yīng)映射xml文件中定義的SQL映射的ID。???????????
BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101);
首先它不是基于文字的,那就更安全了。第二,如果你的IDE有代碼補(bǔ)全功能,那么你可以利用它來操縱已映射的SQL語句。第三,不需要強(qiáng)制類型轉(zhuǎn)換,同時BlogMapper接口可以保持簡潔,返回值類型很安全(參數(shù)類型也很安全)。
新聞熱點(diǎn)
疑難解答
圖片精選