(四)mybatis学习之原始Dao开发方式及与spring整合
2016-04-04 17:33
555 查看
原始Dao开发方式
配置文件
使用之前的user.xmlsqlMapConfig.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); } }
相关文章推荐
- java中的引用
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)(转载)
- 学习笔记——mail发送javax.mail.AuthenticationFailedException: failed to connect at javax.mail.Service.connect(Service.java:322) at javax.mail.Service.connect(Service.java:172) at javax.mail.Service.connect
- JDK自带Tools(预览)
- JavaMail创建邮件和发送邮件
- Java基本数据类型
- JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
- Java爬虫(一)利用GET和POST发送请求,获取服务器返回信息
- 从设计模式说起JAVA I/O流
- java下载文件
- JVM内幕:Java虚拟机详解
- ubuntu14 配置java开发环境
- LeetCode 2 - Add Two Numbers ( JAVA )
- 深入理解java中的synchronized关键字
- java 数字证书生成及证书的加密解密
- Struts2 validation 错误信息重复不消失的问题
- SpringMVC学习记录(二)--controller和view的联系
- javabean, ejb, entitybean的区别,以及POJO的概念
- LeetCode 1 - Two Sum ( JAVA )
- java文件读取Scanner