(四)mybatis学习之原始Dao开发方式及与spring整合

原始Dao开发方式

配置文件

使用之前的user.xml
sqlMapConfig.xml中也已经配置加载了user.xml

定义接口

public interface UserDao {

	
	//根据id查询用户信息
	public User findUserById(String id) throws Exception;

	//添加用户信息
	public void insertUser(User user) throws Exception;
	
	//根据Id删除用户信息
	public void deleteUserById(String id) throws Exception;
}

定义实现类

public class UserDaoImpl implements UserDao {
	
	private SqlSessionFactory sqlSessionFactory;
	
	//使用构造函数注入SqlSessionFactory
	public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
		this.sqlSessionFactory = sqlSessionFactory;
	}

	public User findUserById(String id) throws Exception {
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user = sqlSession.selectOne("xxxx.findUserById", id);
		//释放资源
		sqlSession.close();
		return user;
	}

	public void insertUser(User user) throws Exception {
		SqlSession sqlSession = sqlSessionFactory.openSession();
		sqlSession.insert("xxxx.addUser", user);
		sqlSession.commit();
		//释放资源
		sqlSession.close();
	}

	public void deleteUserById(String id) throws Exception {
		SqlSession sqlSession = sqlSessionFactory.openSession();
		sqlSession.insert("xxxx.deleteUserById", id);
		sqlSession.commit();
		//释放资源
		sqlSession.close();
	}
	
}

代码测试

public class UserDaoImplTest {
	
	private SqlSessionFactory sqlSessionFactory;
	
	@Before
	public void setUp() throws IOException{
		//创建SqlSessionFactory
		String resource = "sqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建会话工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
	}

	@Test
	public void testFindUserById() throws Exception {
		//创建UserDao的对象
		UserDao userDao = new UserDaoImpl(sqlSessionFactory);
		
		//调用dao方法
		User user = userDao.findUserById("4028818f47e229d70147e2742f1b0005");
		
		System.out.println(user);
	}

}



原始Dao开发方式及与spring的整合

mybatis配置文件

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>

	
	<!-- 加载映射文件 -->
	<mappers>
		<mapper resource="sqlMap/user.xml"/>
	</mappers>
	
</configuration>

映射文件

使用之前的user.xml

添加依赖包

在之前的项目基础上还需要加入spring的依赖包 、mybatis和spring的整合包
最终的pom.xml内容如下:
 <dependencies>
  
  	<!-- 添加servlet的依赖包 -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
	</dependency>    
	
	<!-- 添加mybatis的依赖包 -->	
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.3.1</version>
	</dependency>
	
	<!-- 加入mysql数据库依赖包 -->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.38</version>
	</dependency>
	
	<!-- 添加log4j依赖包(slf4j和log4j) -->
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.20</version>
	</dependency>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency>
  
  	<!-- junit单元测试包 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <!-- 加入spring依赖包 -->
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>4.2.1.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-tx</artifactId>
		<version>4.2.1.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>4.2.1.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-beans</artifactId>
		<version>4.2.1.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>4.2.1.RELEASE</version>
	</dependency>
	
	<!-- c3p0依赖包 -->
	<dependency>
		<groupId>com.mchange</groupId>
		<artifactId>c3p0</artifactId>
		<version>0.9.5.2</version>
	</dependency>
		
	
	<!-- mybatis和spring的整合包 -->
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis-spring</artifactId>
		<version>1.2.4</version>
	</dependency>
		
	    
    
  </dependencies>

spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- 配置数据源 -->
   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull"/>
		<property name="user" value="root"/>
		<property name="password" value="888"/>
        <property name="minPoolSize" value="5" />
        <property name="initialPoolSize" value="5" />
        <property name="maxPoolSize" value="50" />
        <property name="maxIdleTime" value="30000" />
        <property name="checkoutTimeout" value="6000"/>
        <property name="acquireIncrement" value="5" />
        <property name="acquireRetryAttempts" value="5" />
        <property name="acquireRetryDelay" value="1000" />
        <property name="idleConnectionTestPeriod" value="1800" />
        <property name="breakAfterAcquireFailure" value="false" />
        <property name="preferredTestQuery" value="select 1" />
    </bean> 
	
	<!-- SqlSessionFactory 
		原生态的mybatis里,sqlMapConfig.xml全局配置文件里配置了environments元素【配置数据源】和一些映射文件,
		我们是通过SqlSessionFactoryBuilder加载读取解析全局配置文件,然后生成SqlSessionFactory会话工厂。
		现在mybatis和spring进行整合,则sqlMapConfig.xml里不再需要environments,数据源的配置交给了spring来管理;
		SqlSessionFactoryBuilder解脱了,SqlSessionFactory会话工厂的创建交由spring来管理了
	-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 加载mybatis配置文件(此时配置文件里面主要是一些映射文件,一些全局的配置信息) -->
		<property name="configLocation" value="sqlMapConfig.xml"/>
		<!-- 数据源 -->
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<bean id="userDao" class="dao.impl.UserDaoImpl">
		<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
	</bean>
	
</beans>

dao接口

public interface UserDao {

	
	//根据id查询用户信息
	public User findUserById(String id) throws Exception;

	//添加用户信息
	public void insertUser(User user) throws Exception;
	
	//根据Id删除用户信息
	public void deleteUserById(String id) throws Exception;
}

dao接口实现类

package dao.impl;

import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import dao.UserDao;
import pojo.User;
/**
 * 
* @ClassName: UserDaoImpl 
* @Description: 继承SqlSessionDaoSupport,使用该类,需要导入spring-tx.jar包
* @author CARLO 931131403@qq.com
* @date 2016年4月3日 下午7:52:46
 */
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
	
	public User findUserById(String id) throws Exception {
		SqlSession sqlSession = this.getSqlSession();
		User user = sqlSession.selectOne("xxxx.findUserById", id);
		//释放资源.spring管理后,方法执行会自动释放资源
		//sqlSession.close();
		return user;
	}

	public void insertUser(User user) throws Exception {
		SqlSession sqlSession = this.getSqlSession();
		sqlSession.insert("xxxx.addUser", user);
		sqlSession.commit();
		//释放资源.spring管理后,方法执行会自动释放资源
		//sqlSession.close();
	}

	public void deleteUserById(String id) throws Exception {
		SqlSession sqlSession = this.getSqlSession();
		sqlSession.insert("xxxx.deleteUserById", id);
		sqlSession.commit();
		//释放资源.spring管理后,方法执行会自动释放资源
		//sqlSession.close();
	}
	
}


测试

package mybatis;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import dao.UserDao;
import pojo.User;

public class UserDaoImplTest {
	
	private ApplicationContext context;

	@Before
	public void setUp() throws Exception {
		context = new ClassPathXmlApplicationContext("classpath:ApplicationContext.xml");
	}

	@Test
	public void testFindUserById() throws Exception {
		
		UserDao userDao = context.getBean(UserDao.class);
		
		User user = userDao.findUserById("402881bc492d83bb01492d8630ad0000");
		
		System.out.println(user);
		
		
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值