在Spring3中使用MyBatis
1.MyBatis 例子
首先,單獨使用MyBatis時:
import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { // 每一個MyBatis的應用程序都以一個SqlSessionFactory對象的實例為核心 // 使用SqlSessionFactory的最佳實踐是在應用運行期間不要重復創建多次,最佳范圍是應用范圍 private final static SqlSessionFactory sqlSessionFactory; static { String resource = "configuration.xml"; Reader reader = null; try { reader = Resources.getResourceAsReader(resource); } catch (IOException e) { System.out.println(e.getMessage()); } // SqlSessionFactory對象的實例可以通過SqlSessionFactoryBuilder對象來獲得 // SqlSessionFactoryBuilder實例的最佳范圍是方法范圍(也就是本地方法變量)。 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } }
配置文件:
<?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="Mapper.UserMapper"> <!-- 這里namespace必須是UserMapper接口的路徑,不然要運行的時候要報錯 “is not known to the MapperRegistry”--> <insert id="insertUser" parameterType="User"> insert into vincent_user(name,age) values(#{name},#{age}) <!-- 這里sql結尾不能加分號,否則報“ORA-00911”的錯誤 --> </insert> <!-- 這里的id必須和UserMapper接口中的接口方法名相同,不然運行的時候也要報錯 --> <select id="getUser" resultType="User" parameterType="java.lang.String"> select * from vincent_user where name=#{name} </select> </mapper>
使用的測試類為:
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; public class TestMapper { static SqlSessionFactory sqlSessionFactory = null; static { sqlSessionFactory = MyBatisUtil.getSqlSessionFactory(); } @Test public void testAdd() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = new User("tom",new Integer(5)); userMapper.insertUser(user); sqlSession.commit();//這里一定要提交,不然數據進不去數據庫中 } finally { sqlSession.close(); } } @Test public void getUser() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUser("jun"); System.out.println("name: "+user.getName()+"|age: "+user.getAge()); } finally { sqlSession.close(); } } }
2.整合Spring3后,單獨使用Mybatis
首先,Spring3配置文件中(applicationContext.xml)有:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:ibatis-config.xml" /> <property name="dataSource" ref="dataSource" /> <!-- mapper和resultmap配置路徑 --> <property name="mapperLocations"> <list> <value>classpath:com/log/bean/mapper/*.xml</value> </list> </property> </bean>
<!-- 通過掃描的模式,掃描目錄在com/log/bean/mapper目錄下,所有的mapper都繼承 SQLMapper接口的接口, 這樣一個bean就可以了 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.log.bean.mapper"/> <property name="markerInterface" value="com.log.bean.mapper.SQLMapper"/> </bean>
工具類:
import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class MyBatisUtil { private final static SqlSessionFactory sqlSessionFactory; static { ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml"); sqlSessionFactory = (SqlSessionFactory)ac.getBean("sqlSessionFactory"); } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!