Java的MyBatis+Spring框架中應用數據拜訪對象DAO形式的辦法。本站提示廣大學習愛好者:(Java的MyBatis+Spring框架中應用數據拜訪對象DAO形式的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的MyBatis+Spring框架中應用數據拜訪對象DAO形式的辦法正文
SqlSessionTemplate
SqlSessionTemplate是MyBatis-Spring的焦點。這個類擔任治理MyBatis的SqlSession,挪用MyBatis的SQL辦法,翻譯異常。SqlSessionTemplate是線程平安的,可以被多個DAO所同享應用。
當挪用SQL辦法時,包括從映照器getMapper()辦法前往的辦法,SqlSessionTemplate將會包管應用的SqlSession是和以後Spring的事務相干的。另外,它治理session的性命周期,包括需要的封閉,提交或回滾操作。
SqlSessionTemplate完成了SqlSession,這就是說要對MyBatis的SqlSession停止簡略單純調換。
SqlSessionTemplate平日是被用來替換默許的MyBatis完成的DefaultSqlSession,由於它不克不及介入到Spring的事務中也不克不及被注入,由於它是線程不平安的。雷同運用法式中兩個類之間的轉換能夠會惹起數據分歧性的成績。
SqlSessionTemplate對象可使用SqlSessionFactory作為結構辦法的參數來創立。
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean>
這個bean如今可以直接注入到DAO bean中。你須要在bean中添加一個SqlSession屬性,就像上面的代碼:
public class UserDaoImpl implements UserDao{ private SqlSession sqlSession; public void setSqlSession(SqlSession sqlSession){ this.sqlSession = sqlSession; } public User getuser(String userId){ return (User)sqlSession.selectOne ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); } }
以下注入SqlSessionTemplate:
<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl"> <property name="sqlSession" ref="sqlSession"/> </bean>
SqlSessionDaoSupport
SqlSessionDaoSupport是一個籠統的支撐類,用來為你供給SqlSession。挪用getSqlSession()辦法你會獲得一個SqlSessionTemplate,這然後可以用於履行SQL辦法,就像上面如許:
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{ public User getUser(String userId){ return (User)getSqlSession().selectOne ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); } }
平日MapperFactoryBean是這個類的首選,由於它不須要額定的代碼。然則,假如你須要在DAO中做其它非MyBatis的任務或須要詳細的類,那末這個類就是很有效了。SqlSessionDaoSupport須要一個sqlSessionFactory或sqlSessionTemplate屬性來設置。這些被明白地設置或由Spring來主動拆卸。假如二者都被設置了,那末sqlSessionFactory是被疏忽的。
假定類UserMapperImpl是SqlSessionDaoSupport的子類,它可以在Spring中停止以下的設置裝備擺設:
<bean id="userMapper" class="org.mybatis.spring.sample.mapper.UserMapperImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>