在Spring3中使用MyBatis

來源:互聯網
上載者:User
Mybatis Spring31.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;       }   }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.