В этой статье в основном представлены три распространенных метода интеграции между Spring и Mybatis. Необходимый пакет инфраструктуры интеграции — mybatis-spring.jar, доступ к которому можно получить по ссылке.
Загрузите с http://code.google.com/p/mybatis/.
1. Используя метод сопоставления данных (MapperFactoryBean), нет необходимости записывать файлы сопоставления mybatis, а соответствующие операторы sql и входные параметры предоставляются с использованием аннотаций.
(1) Файл конфигурации Spring:
<!--Представьте файл конфигурации jdbc--> <context:property-placeholder location="jdbc.properties"/> <!--Создайте источник данных jdbc--> <bean id="dataSource" Destroy-method="close "> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="initialSize" value="${initialSize}"/> <property name="maxActive " value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> </bean> <!--Создайте SqlSessionFactory и укажите источник данных--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--Создайте данные Mapper, преобразователь данных должен быть интерфейсом --> <bean id="userMapper"> <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl2"> <property name="userMapper" ref="userMapper"/> </bean>(2) Сопоставитель данных UserMapper, код следующий:
общедоступный интерфейс UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") User getUser(@Param("userId") long id });(3) класс интерфейса dao UserDao, код выглядит следующим образом:
общедоступный интерфейс UserDao {общественный пользователь getUserById (пользователь пользователя});(4) класс реализации dao UserDaoImpl2, код выглядит следующим образом:
публичный класс UserDaoImpl2 реализует UserDao {частный UserMapper userMapper; public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } public User getUserById (User user) { return userMapper.getUser(user.getId() });2. Используйте класс реализации org.mybatis.spring.SqlSessionTemplate интерфейса org.apache.ibatis.session.SqlSession.
В mybatis sessionFactory может быть создан с помощью SqlSessionFactoryBuilder.
В MyBatis-Spring вместо этого используется SqlSessionFactoryBean.
SqlSessionFactoryBean имеет обязательный атрибут dataSource, а также общий атрибут configLocation (используемый для указания пути к файлу конфигурации xml mybatis).
(1) Файл конфигурации Spring:
<!-- Создайте SqlSessionFactory и укажите источник данных -->
<bean id="sqlSessionFactory">
<property name="dataSource" ref="dataSource" />
<!-- Укажите общий файл конфигурации sqlMapConfig, и настроенная среда больше не будет действовать в контейнере Spring -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--Укажите файл сопоставления класса сущности. Вы можете одновременно указать определенный пакет и все файлы конфигурации в подпакете. Если вам нужно указать псевдоним для класса сущности, требуются только один файл mapperLocations и configLocation. , вы можете указать атрибут configLocation, а затем использовать Mapper для добавления файлов сопоставления классов сущностей в файл общей конфигурации mybatis -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<бобина>
(2) файл общей конфигурации mybatis sqlMapConfig.xml:
<configuration> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper resources="com/xxt/ibatis/ dbcp/domain/user.map.xml" /> </mappers> </configuration>
(3) Файл сопоставления классов сущностей user.map.xml:
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" columns="id" /> <result property=" name" columns="name" /> <result property="password"column="password" /> <result property="createTime"column="createtime" /> </resultMap> <select id="getUser" параметрType="User" resultMap="userMap"> выберите * от пользователя, где id = #{id} </select> <mapper/>(4) класс реализации интерфейса уровня dao UserDaoImpl:
Java-код
общедоступный класс UserDaoImpl реализует UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } public void setSqlSession( SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession } };3. Используйте абстрактный класс org.mybatis.spring.support.SqlSessionDaoSupport для предоставления SqlSession.
(1) файл конфигурации пружины:
Java-код
<bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <property name="mapperLocations" " value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/ > --> </bean> <bean id="sqlSession" > <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl3"> <!--Inject SqlSessionTemplate экземпляр--> <имя свойства= "sqlSessionTemplate" ref="sqlSession" /> <!--Вы также можете напрямую внедрить экземпляр SqlSessionFactory. Если указаны оба, SqlSessionFactory становится недействительным --> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) класс реализации интерфейса уровня дао UserDaoImpl3:
Java-код
публичный класс UserDaoImpl3 расширяет SqlSessionDaoSupport реализует UserDao { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } }