1. 创建项目
1.1 首次使用Create New Project
1.2 选择Maven,勾选复选框,选择maven-archetype-webapp,下一步
1.3 输入GroupId和项目名称,下一步
1.4 配置Maven。因为安装Idea时已经配置好了,这里不用动,直接下一步
1.5 确认项目名和项目路径,完成
2. 完善项目结构
2.1 src/main目录下创建java目录,并设置为源码根目录
2.2 src下创建test目录, 与main平级, 并设置为test source目录(此步骤可省略)
2.3 java目录下创建几个基本package
2.4 resources下创建spring-mvc.xml(集成SpringMVC用,参见标题3)和spring-context.xml(集成Spring用,参见标题4)
2.5 创建mybatis-config.xml,模板参考https://blog.youkuaiyun.com/wzp6010625/article/details/78117015
3. 集成SpringMVC
3.1 集成Spring jar包
Maven仓库:http://mvnrepository.com/
3.1.1 spring-mvc
在Maven仓库网站中,搜索关键字,以下其它jar包做法相同
选择适合的版本,一般选使用量最高的
复制以下区域内容
粘贴到pom的<dependencies>标签中
3.1.2 servlet-api
3.1.3 jstl
注意是javax.servlet,不是jsp
3.2 配置xml文件
3.2.1 前端控制器 servlet(web.xml)
3.2.2 注解驱动 (spring-mvc.xml)
完成
3.2.3 视图解析器(spring-mvc.xml)
3.2.4 扫描Controller控制器(spring-mvc.xml)
完成
3.2.5 字符编码过滤器 filter(web.xml)
3.2.6 配置404,500,欢迎界面等特殊界面(web.xml)(可选)
至此,MVC部分已经搭建好,可编写测试用例测试
4. 集成Spring
4.1 集成jar包
在集成SpringMVC时已经包括了,这里不需要再引入jar
4.2 扫描业务层组件(spring-context.xml)
完成
5. 集成c3p0数据库连接池
5.1 集成jar
5.1.1 c3p0
5.1.2 mysql
如果是Oracle数据库,不能直接引入驱动jar,参考https://blog.youkuaiyun.com/wzp6010625/article/details/7797532
5.2 c3p0 + mysql(spring-context.xml)
6. 配置事务管理
6.1 添加spring-tx和spring-jdbc的jar
直接复制spring-mvc的,修改下即可
完成
6.2 配置事务管理(spring-context.xml)
6.3 使用注解控制事务(spring-context.xml)
完成
7. 集成MyBatis
7.1 集成jar
7.1.1 mybatis
7.1.2 mybatis spring
7.1.3 pagehelper 分页插件
7.1.4 cglib
为避免jar包版本冲突,要从mybatis中去寻找
7.2 配置xml
7.2.1 mybatis-config.xml
<!--相关配置-->
<settings>
<!--是否使用缓存-->
<setting name="cacheEnabled" value="true"/>
<!--超时时间-->
<setting name="defaultStatementTimeout" value="3000"/>
<!--下划线自动转为驼峰命名-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--代理 (特别需要配置)-->
<setting name="proxyFactory" value="CGLIB"/>
<!--延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
<!--集成分页插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
<!--
该参数默认为false,设置为true时,
会将RowBound第一个参数offset当成pageNum页码使用,
和startPage中的pageNum效果一样
-->
<property name="offsetAsPageNum" value="true"/>
<!--
该参数默认为false,
设置为true时,使用RowBounds分页会进行count查询
-->
<property name="rowBoundsWithCount" value="true"/>
<!--
设置为true时,如果pageSize=0或者RowBounds.limit=0,就会查询出全部的结果,
相当于没有执行分页查询,但是返回结果仍然是Page类型
-->
<property name="pageSizeZero" value="true"/>
</plugin>
</plugins>
7.2.2 集成MyBatis,配置SqlSessionFactoryBean(spring-context.xml)
7.2.3 配置扫描mapper生成的dao,MapperScannerConfigurer(spring-context.xml)