- 浏览: 1231136 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
转:spring 3 和mybatis 3集成,并用junit4进行测试
开发环境:
System:Windows xp
IDE:eclipse Java EE 3.6
Database:MySQL
开发依赖库:
JavaEE5、Spring 3.0.5、Mybatis 3.0.4、myBatis-spring-1.0、junit4.8.1
一、准备工作:
1、
MyBatis3 jar 下载:
http://www.mybatis.org/java.html
junit 4 jar下载:
http://www.junit.org/
2、 添加的jar包如下:
3、创建mysql的数据库表,步骤如下:
1、进入mysql的安装路径,假设在:C:\Program Files\MySQL\MySQL Server 5.1\bin; 2、输入命令:mysql -uroot -p,enter,输入密码:admin; 3、mysql>use test; 5、mysql>grant all privileges on test.* to test@'localhost' identified by 'test'; 6、mysql>flush privileges; 4、mysql> create table account_bak(account_id int not null auto_increment, username varchar(20), password varchar(20), create_time datetime, primary key(account_id));
二、spring 和mybatis整合
1、在eclipse中创建一个java project,目录结构如下:
这是一个标准的maven工程的目录结构,下面逐一介绍上图涉及到的文件。
2、创建mybatis的配置文件mybatis.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>
</configuration> |
上面的配置文件中,可以加入一些公共、常用的MyBatis方面的全局配置。如handler、objectFactory、plugin、以及mappers的映射路径(由于在spring配置文件spring.xml中的SqlSessionFactoryBean有配置mapper的location,这里就不需要配置)等。这个文件名称和下面的spring.xml中的configLocation中的值对应,不是随便写的。
3、创建spring的配置文件spring.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" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="test" /> <property name="password" value="test" /> </bean> <!-- 配置事务管理器,注意这里的dataSource和SqlSessionFactoryBean的dataSource要一致,不然事务就没有作用了 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <!-- myBatis文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:mybatis.xml" /> <property name="mapperLocations" value="classpath*:com/glen/model/*.xml" /> <property name="dataSource" ref="dataSource" /> </bean> <bean id="accountDao" class="com.glen.dao.AccountDao"> <property name="sessionFactory" ref="sqlSessionFactory"/> </bean> <bean id="accountService" class="com.glen.service.AccountService"> <property name="accountDao" ref="accountDao"/> </bean> <context:annotation-config /> <context:component-scan base-package="com.glen" /> </beans>
4、JavaBean(Model、Entity)相关类、及mybatis 的mapper对象
javabean:
package com.glen.model; import java.io.Serializable; public class Account implements Serializable { private static final long serialVersionUID = -7970848646314840509L; public Account() { |
account-resultMap.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="accountMap"> <resultMap type="com.hoo.entity.Account" id="accountResultMap"> <id property="accountId" column="account_id"/> <result property="username" column="username"/> <result property="password" column="password"/> <result property="createTime" column="create_time"/> </resultMap> </mapper>
|
<?xml version="1.0" encoding="UTF-8"?> <mapper namespace="account"> |
5、创建dao:
package com.glen.dao; import javax.annotation.Resource; import org.apache.ibatis.session.SqlSession; import com.glen.model.Account;
private SqlSessionFactory sessionFactory; public AccountDao() { } public SqlSessionFactory getSessionFactory() { public void setSessionFactory(SqlSessionFactory sessionFactory) { public void insert(Account account) { SqlSession session = sessionFactory.openSession();
|
package com.glen.service; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.glen.dao.AccountDao;
/** public void setAccountDao(AccountDao accountDao) {
|
Ok,至此spring 和mybatis就整合好了。
三、用junit进行单元测试
在src/test/java目录下,创建一个测试类:TestAccountService:
package com.glen.service; import static org.junit.Assert.assertEquals; import org.apache.log4j.Logger; import com.glen.model.Account;
@Before } // 创建一个帐户 } |
测试通过,显示如下界面:
四、使用spring的标记来注入对象
如上所述,我们在spring的配置文件spring.xml中,定义了两个业务模块相关的bean,accountDao和accountService,但是在实际项目中,这样的dao和service会非常多,如果每个都要这样定义,会造成配置文件的体积过大,可阅读性和可维护性都会变差。
那么如何对spring.xml进行瘦身呢?有两种方案,第一种方案是分模块开发,对于模块内部的bean,写在对应模块内部的spring配置文件中,如:spring-account.xml;第二种方案,就是使用spring的标记。下面我想说说的就是,用spring的标记:@Service @Repository @Resource来实现对象的注入。在上面这个例子基础上,做以下步骤的修改:
1、注释掉spring.xml中的两个bean:accountDao和accountService的定义
<!-- |
2、在AccountDao类中添加两个标记:@Repository和 @Resource,
@Repository @Resource |
3、在AccountService类中添加两个标记:@Service 和 @Resource:
@Service |
4、运行TestAccountService,同样测试通过。 下载jar包
Spring3 jar下载:
发表评论
-
IBATIS resultClass为hashMap时的缓存问题
2012-01-16 15:25 1348http://hi.baidu.com/sgqiang5566 ... -
Ibatis读写CLOB数据
2012-01-10 11:20 1282Ibatis读写CLOB数据 注意:需要更新ORACLE数据 ... -
IBATIS调用存储过程
2011-12-16 10:30 884http://www.iteye.com/topic/8422 ... -
Ibatis select in 的处理
2011-11-16 19:48 1813如下: 在ibatis中如何使用in条件select * f ... -
使用ibator快速生成代码
2011-11-08 18:38 617相关链接: ibator使用说明:http://ibatis ... -
Mybatis入门及提高
2011-11-04 14:08 1185MyBatis学习 之 一、MyBatis简介与配置MyBat ... -
mybatis批量更新的问题
2011-11-04 14:05 2084转:mybatis批量更新的问题 一、问题描述场景 ... -
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
2011-11-03 16:17 2753用Myeclipse开发struts时,配置struts-co ... -
Ibatis在项目中怎么使用的
2011-11-03 10:44 919Spring中配置: <!--定义dat ... -
ibatis快速入门及与spring整合事务管理
2011-11-03 10:18 1612ibatis学习(一)--ibatis ... -
Strut2+Spring整合框架搭建
2011-11-02 22:19 1081参考:http://lukuijun.iteye.com/bl ... -
Spring+hibernate延迟加载报错解决办法之二
2010-06-29 17:28 1215在做删除操作的时候出现了org.springframework ... -
Spring+hibernate延迟加载报错解决办法之一
2010-06-29 17:25 1215我们在项目中一般都会使用Spring来管理Hibernate的 ... -
Spring项目中怎么配置log4j
2010-05-27 11:10 1588在spring项目中配置log4j http://blogg ... -
Spring与Struts集成方式三
2010-05-26 17:11 1155在集成方式一和二中我们是在web.xml中加入配置代码: & ... -
Spring与Struts集成方式二
2010-05-26 14:49 1047在集成方式一的基础上做改进: 第一种集成方案是在action ... -
Spring与Struts集成方式一
2010-05-25 14:13 920我们在Struts中在action类中调用Model层组件进行 ... -
Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)
2010-05-24 17:15 2772采用编程式事务 事务主要分为:编程式事务和声明式事务 ... -
修改Eclipse配置,使得在配置文件中完成自动完成功能。
2010-05-24 15:10 2304在Eclipse中引入spring的配置文件applicati ... -
Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理
2010-05-24 14:52 4133基于schema的aop只是将配置写到配置文件中。 代 ...
相关推荐
本篇将主要探讨Spring框架的几个核心知识点,包括事务传播属性、注解式事务管理、注解式开发、SSM(Spring+SpringMVC+MyBatis)集成开发流程以及Spring与JUnit测试的整合。 **一、事务传播属性失效问题及解决** ...
在这个"spring mvc简单测试的可运行的源代码"中,我们可以学习到如何配置和运行一个基础的Spring MVC应用。 1. **环境准备**:首先,你需要安装Java JDK和Apache Maven或Gradle,它们是构建和管理Java项目的工具。...
10. **单元测试和集成测试**:为了确保代码质量,开发者通常会编写JUnit测试用例进行单元测试,使用Mockito模拟外部依赖。集成测试则通过如Spring Boot的TestRestTemplate或JUnit + Spring Test进行,确保各组件协同...
3. **Jenkins**:掌握Jenkins持续集成工具,实现自动化构建和测试。 ### 七、其他技能 1. **单元测试与Mocking**:使用JUnit、Mockito进行单元测试,确保代码质量。 2. **性能监控**:了解JProfiler、VisualVM等...
7. **测试代码**:项目可能包含JUnit测试用例,帮助开发者验证代码的正确性。 由于MyBatis-CMEU-Maven 已经不再维护,并且建议使用Spring-generator替代,这可能意味着Spring-generator提供了更多功能或者更好的...
1. **单元测试**:SpringBoot支持JUnit和Mockito进行单元测试,`@SpringBootTest`注解可以帮助创建Spring应用上下文。 2. **集成测试**:使用`@WebMvcTest`或`@DataJpaTest`进行特定层的测试。 ### 七、SpringBoot...
- 使用JUnit进行单元测试,确保功能正常。 - 打包成jar或war,部署到服务器,如Tomcat。 通过以上步骤,我们可以构建一个基于SpringBoot 2.2.6、MyBatis 3.5.4和JWT的前后端分离应用。这不仅可以实现安全的身份...
15. **单元测试和集成测试**:可能使用JUnit和Mockito等工具进行代码测试,确保功能的正确性。 通过学习和实践这个项目,开发者能够掌握Java Web开发的全貌,包括前后端交互、数据库操作、权限控制等多个方面,对...
JUnit支持断言、参数化测试和测试套件等功能。同时,Mockito可能被用来创建和配置模拟对象,以隔离测试目标代码,避免外部依赖对测试结果的影响。 **5. API设计与RESTful原则** API(应用程序编程接口)是啤酒库存...
8. **测试框架**:JUnit、Mockito等工具用于单元测试,而Selenium、Appium等则支持功能测试和UI自动化测试,确保整合后的系统稳定可靠。 9. **安全集成**:OAuth2、JWT(JSON Web Tokens)等协议用于实现身份验证和...
9. **测试**:确保登录功能的正确性通常需要单元测试和集成测试。JUnit是Java常用的单元测试框架,而Mockito可以帮助模拟依赖关系。 10. **版本控制**:由于文件名中包含“master”,可能意味着项目使用了Git进行...
13. **单元测试和持续集成**:JUnit是Java的单元测试框架,而Maven和Gradle是常见的构建工具,Jenkins等工具则用于持续集成和自动化部署。 14. **Java编程规范**:遵循一定的编码规范如命名规则、注释标准等,可以...