บทความนี้จะแนะนำวิธีการผสานรวมทั่วไปสามวิธีระหว่าง Spring และ Mybatis เป็นหลัก แพ็คเกจเฟรมเวิร์กการรวมที่จำเป็นคือ mybatis-spring.jar ซึ่งสามารถเข้าถึงได้ผ่านลิงก์
ดาวน์โหลดจาก http://code.google.com/p/mybatis/
1. การใช้เมธอด data mapper (MapperFactoryBean) ไม่จำเป็นต้องเขียนไฟล์การแมป mybatis และคำสั่ง sql และพารามิเตอร์อินพุตที่เกี่ยวข้องนั้นจัดทำขึ้นโดยใช้คำอธิบายประกอบ
(1) ไฟล์กำหนดค่าสปริง:
<!--แนะนำไฟล์การกำหนดค่า 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="ชื่อผู้ใช้" value="${username}"/> <property name="password" value="${password}"/> <property name="initialSize" value="${initialSize}"/> <property ชื่อ="maxActive " value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> </bean> <!--สร้าง SqlSessionFactory และระบุแหล่งข้อมูล--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--สร้างข้อมูล ผู้ทำแผนที่ ผู้ทำแผนที่ข้อมูลจะต้องเป็นส่วนต่อประสาน --> <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) Data mapper 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; setUserMapper สาธารณะ (UserMapper userMapper) { this.userMapper = userMapper; } ผู้ใช้สาธารณะ getUserById (ผู้ใช้) { 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) ไฟล์กำหนดค่าสปริง:
<!-- สร้าง SqlSessionFactory และระบุแหล่งข้อมูล -->
<bean id="sqlSessionFactory">
<ชื่อคุณสมบัติ="dataSource" ref="dataSource" />
<!-- ระบุไฟล์การกำหนดค่าโดยรวมของ sqlMapConfig และสภาพแวดล้อมที่กำหนดเองจะไม่มีผลในคอนเทนเนอร์สปริงอีกต่อไป -->
<ชื่อคุณสมบัติ="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--ระบุไฟล์การแมปคลาสเอนทิตี คุณสามารถระบุแพ็คเกจและไฟล์การกำหนดค่าทั้งหมดภายใต้แพ็คเกจย่อยพร้อมกันได้ คุณสามารถระบุแอตทริบิวต์ configLocation จากนั้นใช้ mapper เพื่อแนะนำไฟล์การแมปคลาสเอนทิตีในไฟล์การกำหนดค่าทั่วไป mybatis -->
<!- - <ชื่อคุณสมบัติ="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<ถั่ว>
(2) ไฟล์การกำหนดค่ารวม mybatis sqlMapConfig.xml:
<การกำหนดค่า> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="ผู้ใช้" /> </typeAliases> <mappers> <ทรัพยากร mapper="com/xxt/ibatis/ dbcp/ โดเมน/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" column="id" /> <คุณสมบัติผลลัพธ์=" ชื่อ" column="name" /> <result property="password" column="password" /> <result property="createTime" column="createtime" /> </resultMap> <select id="getUser" parameterType="User" resultMap="userMap"> เลือก * จากผู้ใช้โดยที่ id = #{id} </select> <mapper/>(4) คลาสการใช้งานอินเทอร์เฟซเลเยอร์ dao UserDaoImpl:
รหัสจาวา
คลาสสาธารณะ UserDaoImpl ใช้ UserDao { public SqlSessionTemplate sqlSession; } public void setSqlSession( เทมเพลต SqlSession sqlSession) { this.sqlSession = sqlSession; } }3. ใช้คลาสนามธรรม org.mybatis.spring.support.SqlSessionDaoSupport เพื่อจัดเตรียม SqlSession
(1) ไฟล์การกำหนดค่าสปริง:
รหัสจาวา
<bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <ชื่อคุณสมบัติ="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"> <!--ฉีดอินสแตนซ์ SqlSessionTemplate--> <ชื่อคุณสมบัติ= "sqlSessionTemplate" ref="sqlSession" /> <!--คุณยังสามารถฉีดอินสแตนซ์ SqlSessionFactory ได้โดยตรง เมื่อระบุทั้งคู่ SqlSessionFactory จะไม่ถูกต้อง--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) คลาสการใช้งานอินเทอร์เฟซเลเยอร์ dao UserDaoImpl3:
รหัสจาวา
คลาสสาธารณะ UserDaoImpl3 ขยาย SqlSessionDaoSupport ใช้งาน UserDao { ผู้ใช้สาธารณะ getUserById(ผู้ใช้ผู้ใช้) { กลับ (ผู้ใช้) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);