Spring与Mybatis的整合之原始Dao的整合方式
来源:互联网 发布:潍坊行知学校是高中吗 编辑:程序博客网 时间:2024/06/04 19:58
0.项目目录截图
1.db.properties
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql:
- jdbc.username=root
- jdbc.password=1234
2.log4j.properties
- # Global logging configuration
- log4j.rootLogger=DEBUG, stdout
- # Console output...
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
3.SqlMapConfig.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <!--定义别名 -->
- <typeAliases>
- <package name="com.mybatis.entity" />
- </typeAliases>
-
- <!-- 加载配置文件 -->
- <mappers>
- <mapper resource="sqlmap/User.xml" />
- </mappers>
-
- </configuration>
4.User.xml
- <?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="user">
-
- <select id="findUserById" parameterType="int" resultType="user">
- select
- * from user where id = #{id}
- </select>
-
- <select id="findUserByUsername" parameterType="java.lang.String"
- resultType="user">
- select * from user where username like '%${value}%'
- </select>
-
- <!-- parameterType:定义输入到sql中的映射类型, #{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql。
- resultType:定义结果映射类型。 -->
-
-
-
- <insert id="insertUser" parameterType="com.mybatis.entity.User">
- <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
- select
- LAST_INSERT_ID()
- </selectKey>
- insert into user(username,birthday,sex,address)
- values(#{username},#{birthday},#{sex},#{address})
- </insert>
-
- <delete id="deleteUserById" parameterType="int">
- delete from user where
- id=#{id}
- </delete>
-
-
- <update id="updateUser" parameterType="com.mybatis.entity.User">
- update user set
- username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
- where id=#{id}
- </update>
-
- </mapper>
5.applicationContext.xml
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
-
-
- <context:property-placeholder location="classpath:db.properties" />
-
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="${jdbc.driver}" />
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}" />
- <property name="password" value="${jdbc.password}" />
- <property name="maxActive" value="10" />
- <property name="maxIdle" value="5" />
- </bean>
-
-
-
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-
- <property name="dataSource" ref="dataSource" />
-
- <property name="configLocation" value="classpath:SqlMapConfig.xml" />
- </bean>
-
-
-
- <bean id="userDao" class="com.mybatis.daoimpl.UserDaoImpl">
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- </bean>
-
-
- <bean id="userService" class="com.mybatis.service.UserService">
- <property name="userDao" ref="userDao" />
- </bean>
-
-
-
-
- <bean id="txManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"></property>
- </bean>
-
-
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <tx:method name="find*" read-only="true" />
- <tx:method name="insert*" propagation="REQUIRED" />
- <tx:method name="delete*" propagation="REQUIRED" />
- <tx:method name="update*" propagation="REQUIRED" />
- <tx:method name="*" read-only="true" />
- </tx:attributes>
- </tx:advice>
-
-
- <aop:config>
- <aop:pointcut expression="execution(* com.mybatis.service.*.*(..))"
- id="pt" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="pt" />
- </aop:config>
-
- </beans>
6.IUserDao.Java
- public interface IUserDao {
-
- public User findUserById(int id);
-
-
- public void insertUser(User user);
-
-
- public void deleteUser(int id);
-
-
- public void updateUser(User user);
- }
7.UserDaoImpl.java
- public class UserDaoImpl extends SqlSessionDaoSupport implements IUserDao {
-
-
-
-
- @Override
- public User findUserById(int id) {
- SqlSession sqlSession = this.getSqlSession();
- User user = sqlSession.selectOne("user.findUserById", id);
- return user;
-
- }
-
- @Override
- public void insertUser(User user) {
- SqlSession sqlSession = this.getSqlSession();
-
- sqlSession.insert("user.insertUser", user);
-
- }
-
- @Override
- public void deleteUser(int id) {
- SqlSession sqlSession = this.getSqlSession();
-
- sqlSession.delete("user.deleteUserById", id);
-
- }
-
- @Override
- public void updateUser(User user) {
- SqlSession sqlSession = this.getSqlSession();
-
- sqlSession.update("user.updateUser", user);
- }
-
- }
8.测试代码
- public class UserDaoImplTest {
-
- private ApplicationContext applicationContext;
-
- @Before
- public void setUp() throws Exception {
-
-
- applicationContext = new ClassPathXmlApplicationContext(
- "applicationContext.xml");
-
- }
-
- @Test
- public void testFindUserById() throws Exception {
-
-
- IUserDao userDao = (IUserDao) applicationContext.getBean("userDao");
- User user = userDao.findUserById(1);
- System.out.println(user);
-
- }
-
- @Test
- public void deleteUser() throws Exception {
-
-
- IUserDao userDao = (IUserDao) applicationContext.getBean("userDao");
- userDao.deleteUser(44);
-
- }
-
- @Test
- public void insertUser() throws Exception {
-
-
- IUserDao userDao = (IUserDao) applicationContext.getBean("userDao");
- User user = new User();
- user.setUsername("hehe");
- user.setSex("2");
- userDao.insertUser(user);
- System.out.println(user);
- }
-
- @Test
- public void updateUser() throws Exception {
-
-
- UserService service = applicationContext.getBean("userService",
- UserService.class);
- User user = new User();
- user.setId(46);
- user.setUsername("hehe22");
- user.setSex("2");
- service.updateUser(user);
-
- }
-
- }
9.Mybatis与spring整合,原始DAO的方式的一般步骤
1.采用此种方式,就是 编写DAO接口,编写DAO接口的实现类,编写实体的配置文件,将实体的配置文件加入到Mybatis的全局配置文件中。
2.在sqlMapConfig.xml中配置映射文件的位置
- <mappers>
- <mapper resource="mapper.xml文件的地址" />
- <mapper resource="mapper.xml文件的地址" />
- </mappers>
3.定义DAO接口
4.编写实体的配置文件
5.DAO接口的实现,去继承SqlSessionDaoSupport
dao接口实现类中,可以利用this.getSqlSession()进行数据的增删改查
6.Spring配置文件的配置
- <bean id=" "class="mapper接口的实现">
- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
- </bean>
10.源码下载
0 0