菠萝大象
用心思考,用心写作
首页
新随笔
联系
管理
随笔-67 评论-522 文章-0 trackbacks-0
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)
Spring
更新到
3.0
之后,其
MVC
框架加入了一个非常不错的东西
——
那就是
REST
。
它的开放式特性,与
Spring
的无缝集成,以及
Spring
框架的优秀表现,使得现在很多公司将其作为新的系统开发框架。大象根据实际的项目经验,以之前
SSH2
例子为基础,对其进行一次大改造,
详细的为大家讲解如何实现
SSM3
全注解式的开发。
这次大象将采取两种构建方式,一是很多人喜欢用的
MyEclipse
,另一个,则是用
Eclipse+Maven
。这一篇,将主要讲解开发环境
设置
与
Maven
构建方式。
1、
开发环境
JDK1.6.0_18
Eclipse-3.6 Maven3.0.1 m2eclipse0.12.1.20110112-1712
Tomcat6.0.10 maven-jetty-plugin6.1.26
MySQL5.0.27 Navicat Lite for MySQL 8.1.20
每个人的开发环境可能会有差异,但有一点我需要说明的是,
JDK
的版本不得低于
1.5
,因为用到了很多
1.5
版才支持的新特性。
Tomcat
、
Jetty
、
Maven
和
MySQL
请
不要低于我所用的版本,因为我没在其它的版本上进行测试。
Navicat
则是
MySQL
数据库的图形化操作工具。接下来
我将介绍如何在
Eclipse3.6
中,使用
m2eclipse
插件构建
web
应用及测试开发环境。
2、
设置
Maven
Maven
的安装很简单,只需要解压即可,请设置
PATH
变量,这样可以使用命令行进行操作,然后就要在
%MAVEN_HOME%\conf
目录下,对
settings.xml
作下修改
这就是设置本地仓库,目录可以根据自己的实际情况更改,不过请使用
"/"
正斜杠,因为我在实际使用中,发现反斜杠有时候获取不到资源。对于个人使用,设置好这个就
OK
了,至于
Nexus
配置不在本文讨论范围内,大家如有兴趣可以去看看
juven xu
的博客,他是目前公认的
Maven
专家。
3、
安装
m2eclipse
选择
Help->Install New Software...
在弹出的窗口中,点击
Add...
又会弹出一个小窗口,输入
m2eclipse
的安装地址,如下图所示:
输入完成后,点击
OK
,这时
Eclipse
就开始查找这个插件了,请耐心等一会。
插件找到后,请勾选要安装的内容,接下来就是一般的安装流程了,此处省略
500
字。安装完成请重新启动
Eclipse
,然后再对这个插件进行一番设置。
4、
设置
m2eclipse
进入
Perferences
,选择
Maven
,去掉
Download repository index updates on startup
前的勾,默认情况是会在每次启动
Eclipse
的时候自动去
Maven
中央仓库下载索引,这无疑是非常不好的,要知道
Maven
中央仓库所包含的
jar
资源非常庞大,而且每天都会有很多新的项目上传,弄不好
Eclipse
还没开始用,就被这些东西搞挂掉了。
接下来选择
Installations
将这个插件自带的
Maven
换成之前安装的
Maven
,这样就保证了版本的一致性。
设置好这个之后,再点击
User Settings
,用本机
maven
的
settings.xml
替换默认的配置文件,因为默认的设置是会将本地仓库放到系统盘符
\Documents and Settings\
用户目录
\.m2\repository
这个目录下面。
大家可以看到,用
maven
中的配置文件替换后,下面的
Local Repository
自动变更为
settings.xml
中的设置。
5、
创建
maven工程
做完这些,我们就可以开始创建
Maven
工程了。
选择
New->other...->Maven->Maven Project
,然后选择下一步
请设置工作空间路径,大象的默认工作空间放在
eclipse
的根目录下面,这里的
Location
显示的应该为空,为了进行说明,特将路径显示出来。确定没问题后,
Next>
这个列表显示的就是
maven
支持的所有项目创建类型,我们是开发
web
应用,所以请选择
maven-archetype-webapp
最后一步输入我们要创建的项目,在
Maven
世界中,使用坐标来唯一标识一个构件,可以理解为项目,资源等等。
Group Id
表示当前项目所属的实际项目,
Artifact Id
定义实际项目中的一个
Maven
项目,根据名字就可以看出来,
Group Id
是一个大范围,而
Artifact Id
是一个小范围。比如大家都很熟悉的
spring
,就分成了
spring-core.jar
、
spring-beans.jar
、
spring-context.jar
等等。在
maven
里面,它的
Group Id
就是
org.springframework
,而
Artifact Id
则为
spring-core
、
spring-beans
、
spring-context
。怎么样?理解了没有?
到此,项目生成了,请展开
src/main
,在
main
目录下新建一个
java
文件夹,打开
ssm3
的项目属性,选择
Java Build Path->Source->Add Folder...->
勾选
java
,这样做的目的,就是将
src/main/java
这个路径作为源文件的文件夹,这和以往用
MyEclipse
做开发的目录结构是不同的。而
maven
的规则也是这样定义的,假如你不进行这个设置,就算你在
main
下面创建了
java
目录,再添加包或类时,就会有问题,大家试试,看会出现什么错误。
6、
运行
ssm3
接下来,在
pom.xml
里面加入
maven-jetty-plugin
插件,默认生成的配置都可以去掉,整个
pom
就只有下图所示的配置。
打开
Run Configurations
,这有多种方式打开,可以从菜单
Run
里面选,也可以从工具栏选择,还可以在项目点击右键选择。
在弹出的窗口,
Maven Build
里面
设置运行参数,点击
Browse Workspace...
会弹出下图那个小窗口,设定
Base directory
,加入
jetty:run
,点击
Run
,启动
jetty
在浏览器中输入
http://localhost:8080/ssm3
会显示
Hello World!
,调用的是
ssm3/main/webapp/index.jsp
,大象加了点内容,结果就是这样的
到这里,关于在
Eclipse
里搭建
maven
环境,配置,创建,运行,测试就全部讲完了,大家动手做做,熟悉一下这种开发方式,接下来就会在这个骨架上开发
SSM3
示例。恩,我们下次继续。
本文为菠萝大象原创,如要转载请注明出处。
http://bolo.blogjava.net/
posted on 2011-05-23 00:57
菠萝大象
阅读(29213)
评论(14)
编辑
收藏
所属分类:
Spring3
评论:
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-05-23 09:30 |
roywong
终于出来了终于出来了,期待已久。哈哈 感谢
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-05-23 13:51 |
QAlong
问个问题,
前几天我也实践了一个全注解的方式
使用了mybatis-spring-integration,所有dao中的代码都不需要使用实现类,而是直接接口对应着mapping
但是在实际中遇到批量操作数据的时候却没有很好的方式解决。
所以请教一下有没有好的建议
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-05-23 14:14 |
菠萝大象
@QAlong
你说的批量操作数据是什么意思?insert?update?delete?另外我感觉在mapping中定义namespace的方式,要创建好多个接口,维护起来不是很方便。
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-05-23 17:58 |
目绘艺术
您好!我看了你前面一篇关于eclipse与myeclipse的讨论帖。
不过我今天看你使用maven的方式全是图形化界面。
一种比较好的方式,使用命令行创建一个webapp项目。
然后使用mvn eclipse:eclipse生成eclipse特性文件,很方便根本不需要你修改Java Build Path,麻烦。
你写的文章排版很不错,看上去很舒心。图片上面的水印是用什么工具做的?
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-05-23 18:44 |
菠萝大象
@目绘艺术
你说的在命令行操作是很好,不过要打出一长串命令,还有大小写之分,对于初学者来说,不是很适合。水印是用轻松水印工具做的。
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-05-26 00:39 |
gavingeng
呵呵,不错!
config的很基础
期待后续的更新......
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-06-01 20:59 |
QAlong
@菠萝大象
我说的是batch操作,一次性插入成上千条数据的时候
比如我是这样实现的:
public interface AreaDao {
List<Area> getAll();
void insert(Area area);
void update(Area area);
void delete(Area area);
}
public interface AreaManager {
List<Area> getAll();
String insert(Area area);
void update(Area area);
void delete(Area area);
}
@Service
public class AreaManagerImpl implements AreaManager {
@Autowired
public AreaDao areaDao;
public void setAreaDao(AreaDao areaDao) {
this.areaDao = areaDao;
}
public List<Area> getAll() {
return areaDao.getAll();
}
public String insert(Area area) {
if (areaDao.getByArea(area).size() != 0)
return "Error";
areaDao.insert(area);
return "Success";
}
public void update(Area area) {
areaDao.update(area);
}
public void delete(Area area) {
areaDao.delete(area);
}
}
<mapper namespace="com.gc.dao.AreaDao">
<resultMap id="RM.Area" type="com.gc.entity.Area">
<result property="id" column="ID" />
<result property="areaCode" column="AREA_CODE" />
<result property="areaNameChn" column="AREA_NAME_CHN" />
<result property="areaNameEng" column="AREA_NAME_ENG" />
<result property="areaNameKrn" column="AREA_NAME_KRN" />
<result property="isDeleted" column="IS_DELETED" />
<result property="live" column="LIVE" />
<collection property="parent" column="PARENT_ID" select="getParentArea" />
</resultMap>
<sql id="Area.columns">
<![CDATA[
ID,AREA_CODE,AREA_NAME_CHN,AREA_NAME_ENG,AREA_NAME_KRN,PARENT_ID,IS_DELETED
]]>
</sql>
<select id="getAll" resultMap="RM.Area">
select * from bs_area where
is_deleted=0
</select>
略。。。
</mapper>
<beans xmlns="
http://www.springframework.org/schema/beans
"" target="_new">
http://www.springframework.org/schema/beans
"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="
http://www.springframework.org/schema/aop
"" target="_new">
http://www.springframework.org/schema/aop
"
xmlns:tx="
http://www.springframework.org/schema/tx
"" target="_new">
http://www.springframework.org/schema/tx
" xmlns:jdbc="
http://www.springframework.org/schema/jdbc
"" target="_new">
http://www.springframework.org/schema/jdbc
"
xmlns:context="
http://www.springframework.org/schema/context
"" target="_new">
http://www.springframework.org/schema/context
"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context
/spring-context-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans
/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc
/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx
/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop
/spring-aop-3.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- enable component scanning (beware that this does not enable mapper
scanning!) -->
<context:component-scan base-package="com.gc.biz.impl" />
<!-- enable autowire -->
<context:annotation-config />
<!-- enable transaction demarcation with annotations -->
<tx:annotation-driven />
<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.gc.dao" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<!-- define the SqlSessionFactory, notice that configLocation is not needed
when you use MapperFactoryBean
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>-->
<bean id="expensesItemBatchDao" class="com.gc.dao.util.ExpensesItemBatchDao">
<!-- <property name="jdbcTemplate" ref="jdbcTemplate"> </property> -->
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
</beans>
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-06-01 23:31 |
菠萝大象
@QAlong
你的mapper文件里略去了insert方法的配置,我不知道你是怎么写的,如果是一条普通的insert语句,从你的areaDao的插入方法可以看出,你传入的参数是一个pojo对象,你想通过这样一个对象来实现一次性插入成千上万条数据,我觉得这不可能。
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2011-06-03 11:48 |
秦焜
"Group Id是一个大范围,而Artifact Id是一个小范围"根据spring实例讲解 我更加深了印象。
另外eclipse3.6 maven plugin安装时候 可以从Help->Eclipse Marketplace->Search maven。 好处就是不用记那么多url了。
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2012-05-23 23:08 |
bj
新建个maven project
Select an Archetype 时候选择了 maven-archetype-webapp
finish的时候 提示我以下的错误
Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:RELEASE from any of the configured repositories.
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2012-05-24 10:33 |
菠萝大象
@bj
你装的插件是什么版本?你本地装了maven吗?不要用插件自带的maven,down一个3.0的版本,按我写的步骤做,是没问题的
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一) 2012-05-27 11:01 |
bj
@菠萝大象
问题解决!谢谢大象!
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)[未登录] 2012-07-09 10:34 |
飞
@bj
@bj
你咋解决的?
回复
更多评论
#
re: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)
2013-03-12 20:18 |
神一样存在
大象你好niubi
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Quartz Spring与Spring Task总结
基于SSM3框架使用FreeMarker模板生成静态页的实现
基于Spring MVC框架JSR-303的自定义注解Validator验证实现
基于Spring MVC框架的异常隐藏实现方法
解决Spring MVC框架静态资源文件显示问题
基于SSM3框架FreeMarker自定义指令(标签)实现
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(五)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)
<
2011年5月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
随笔分类
(67)
Concurrency(3)
Database(4)
dom4j&jdom(3)
Eclipse(3)
Flex(4)
Hibernate(2)
Java(11)
jBPM(1)
jQuery(5)
Linux(1)
mybatis-generator(3)
Spring3(11)
Struts2(9)
随笔(7)
随笔档案
(67)
2015年9月 (1)
2015年8月 (1)
2015年7月 (1)
2015年5月 (1)
2015年4月 (1)
2015年3月 (3)
2015年2月 (1)
2015年1月 (2)
2014年8月 (1)
2014年6月 (2)
2014年5月 (2)
2014年4月 (3)
2014年3月 (1)
2014年2月 (1)
2014年1月 (2)
2013年12月 (3)
2013年11月 (2)
2013年10月 (2)
2013年9月 (2)
2012年5月 (1)
2012年4月 (2)
2011年8月 (1)
2011年6月 (1)
2011年5月 (3)
2010年9月 (1)
2010年8月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (2)
2010年4月 (4)
2010年3月 (2)
2010年2月 (7)
2008年9月 (2)
2008年8月 (6)
搜索
积分与排名
积分 - 779554
排名 - 54
最新随笔
1. 由Struts2Action代理和googlecode-jsonplugin产生的一个IllegalArgumentException异常问题
2. 在CentOS系统中同步时间
3. 全局唯一ID生成器浅析
4. 用Java实现MJD转UTC
5. 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(三)
6. 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(二)
7. 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
8. Quartz Spring与Spring Task总结
9. 常用的MySQL复杂查询语句写法
10. 常用的MySQL语句写法
11. 浅谈Java两种并发类型——计算密集型与IO密集型
12. 使用XStream注解实现Java对象与XML互相转换的代码示例
13. 浅谈volatile变量的理解
14. 浅谈Java共享变量
15. m2eclipse安装小贴士
最新评论
1. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--半湖思絮
2. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--菠萝大象
3. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--donghc
4. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
@donghc
maven不是这样玩的呀,我的run是打包后用的,你仔细看了第三篇的内容么?在IDE里直接启动StartUp就行了,这个类是用来测试的
--菠萝大象
5. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--donghc
阅读排行榜
1. 使用jackson对Java对象与JSON字符串相互转换的一些总结(59323)
2. 在Eclipse中反编译Class文件完全详解(43552)
3. Quartz Spring与Spring Task总结(38541)
4. 使用XStream注解实现Java对象与XML互相转换的代码示例(33110)
5. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)(32439)
评论排行榜
1. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(五)(69)
2. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(三)(47)
3. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)(35)
4. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(二)(27)
5. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)(26)