Artikel ini terutama memperkenalkan tiga metode integrasi umum antara Spring dan Mybatis. Paket kerangka integrasi yang diperlukan adalah mybatis-spring.jar, yang dapat diakses melalui tautan
Unduh dari http://code.google.com/p/mybatis/.
1. Dengan menggunakan metode data mapper (MapperFactoryBean), tidak perlu menulis file pemetaan mybatis, dan pernyataan sql terkait serta parameter input disediakan menggunakan anotasi.
(1) File konfigurasi pegas:
<!--Memperkenalkan file konfigurasi jdbc--> <context:property-placeholder location="jdbc.properties"/> <!--Membuat sumber data jdbc--> <bean id="dataSource" destroy-method="close "> <nama properti="driverClassName" value="${driver}"/> <nama properti="url" value="${url}"/> <nama properti="nama pengguna" value="${namapengguna}"/> <nama properti="kata sandi" value="${kata sandi}"/> <nama properti="initialSize" value="${initialSize}"/> <nama properti="maxActive " value="${maxActive}"/> <nama properti="maxIdle" value="${maxIdle}"/> <nama properti="minIdle" value="${minIdle}"/> </bean> <!--Buat SqlSessionFactory dan tentukan sumber data--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--Buat data Mapper, data mapper harus berupa antarmuka --> <bean id="userMapper"> <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" /> <nama properti="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl2"> <nama properti="userMapper" ref="userMapper"/> </bean>(2) Pemeta data UserMapper, kodenya sebagai berikut:
antarmuka publik UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") Pengguna getUser(@Param("userId") long id }(3) kelas antarmuka dao UserDao, kodenya adalah sebagai berikut:
antarmuka publik UserDao { Pengguna publik getUserById(Pengguna pengguna }(4) kelas implementasi dao UserDaoImpl2, kodenya sebagai berikut:
kelas publik UserDaoImpl2 mengimplementasikan UserDao { UserMapper pribadi userMapper; public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper } Pengguna publik getUserById(Pengguna pengguna) { return userMapper.getUser(user.getId());2. Gunakan kelas implementasi org.mybatis.spring.SqlSessionTemplate dari antarmuka org.apache.ibatis.session.SqlSession.
Di mybatis, sessionFactory dapat dibuat oleh SqlSessionFactoryBuilder.
Di MyBatis-Spring, SqlSessionFactoryBean digunakan sebagai gantinya.
SqlSessionFactoryBean memiliki atribut yang diperlukan dataSource, dan juga memiliki atribut umum configLocation (digunakan untuk menentukan jalur file konfigurasi xml mybatis).
(1) File konfigurasi pegas:
<!-- Buat SqlSessionFactory dan tentukan sumber data -->
<bean id="sqlSessionFactory">
<nama properti="dataSource" ref="dataSource" />
<!-- Tentukan keseluruhan file konfigurasi sqlMapConfig, dan lingkungan yang disesuaikan tidak lagi berlaku di wadah pegas -->
<nama properti="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--Tentukan file pemetaan kelas entitas. Anda dapat menentukan paket tertentu dan semua file konfigurasi di bawah sub-paket secara bersamaan. Hanya satu mapperLocations dan configLocation yang diperlukan , Anda dapat menentukan atribut configLocation, lalu Gunakan mapper untuk memperkenalkan file pemetaan kelas entitas di file konfigurasi umum mybatis -->
<!- - <nama properti="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<kacang>
(2) total file konfigurasi mybatis sqlMapConfig.xml:
<konfigurasi> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper resource="com/xxt/ibatis/ dbcp/domain/pengguna.map.xml" /> </mappers> </konfigurasi>
(3) File pemetaan kelas entitas user.map.xml:
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" kolom="id" /> <result property=" nama" kolom="nama" /> <result property="password" kolom="password" /> <result property="createTime" kolom="createtime" /> </resultMap> <pilih id="getUser" parameterType="User" resultMap="userMap"> pilih * dari pengguna dengan id = #{id} </select> <mapper/>(4) kelas implementasi antarmuka lapisan dao UserDaoImpl:
kode Jawa
kelas publik UserDaoImpl mengimplementasikan UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } public void setSqlSession( Templat SqlSession sqlSesi) { ini.sqlSesi = sqlSesi;3. Gunakan kelas abstrak org.mybatis.spring.support.SqlSessionDaoSupport untuk menyediakan SqlSession.
(1) file konfigurasi pegas:
kode Jawa
<bean id="sqlSessionFactory"> <nama properti="dataSource" ref="dataSource" /> <nama properti="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <nama properti="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"> <!--Menyuntikkan instance SqlSessionTemplate--> <nama properti= "sqlSessionTemplate" ref="sqlSession" /> <!--Anda juga dapat langsung memasukkan instance SqlSessionFactory. Ketika keduanya ditentukan, SqlSessionFactory menjadi tidak valid--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) kelas implementasi antarmuka lapisan dao UserDaoImpl3:
kode Jawa
kelas publik UserDaoImpl3 extends SqlSessionDaoSupport mengimplementasikan UserDao { Pengguna publik getUserById(Pengguna pengguna) { return (Pengguna) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", pengguna);