##Spring+SpringMVC+Mybatis+Maven+Mysql
源码GitHub地址:MistraR/MistraRSSSMMM
##一、创建Maven项目
详情见博客:IntelliJ IDEA 创建Maven 工程
创建完成此时的包结构目录:
此时在WEB-INF下已经有一个log4j.xml配置文件,查看此文件内容可以看到已经自动对log4j进行了一些基本配置。不过这里我们采用log4j.properties方式来配置log4j。log4j相关用法参考另一篇博客:log4j的知识点以及相关报错问题解决办法。
本项目的pom.xml
4.0.0
war
MistraRSSSMMM
com.sm
MistraRSSSMMM
1.0-SNAPSHOT
UTF-8
3.2.0.RELEASE
5.1.29
3.0-alpha-1
1.8.1
1.9
1.4
8.1.8.v20121106
1.7.5
6.8.7
org.apache.tomcat.maven
tomcat6-maven-plugin
2.1
http://localhost:8080/manager
Tomcat6
8080
/mistrasssmmm
org.apache.maven.plugins
maven-surefire-plugin
2.17
methods
10
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
src/main/resources/generatorConfig.xml
true
true
Generate MyBatis Artifacts
generate
org.mybatis.generator
mybatis-generator-core
1.3.2
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-test
${spring.version}
test
org.mybatis
mybatis-spring
1.3.0
org.mybatis
mybatis
3.4.1
org.apache.ibatis
ibatis-sqlmap
2.3.0
org.apache.ibatis
ibatis-core
3.0
commons-dbcp
commons-dbcp
1.4
mysql
mysql-connector-java
${mysql.version}
log4j
log4j
1.2.17
jstl
jstl
1.2
org.aspectj
aspectjweaver
${aspectj.version}
org.codehaus.jackson
jackson-mapper-asl
1.9.11
org.testng
testng
${testng.version}
test
org.apache.maven.plugins
maven-clean-plugin
2.5
各个包的版本真的很重要,有时候一个包版本不匹配就会报些奇怪的错误,要是想使用不同版本的包就只能自己慢慢调了。
创建好相应的包结构:
创建数据库:创建一张有:用户名、密码字段的user表就好了。
##二、整合
###1、在src/main/resources下创建jdbc.properties和log4j.properties
jdbc.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/ssmintroduction?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=123456
log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG,out
# Console output...
log4j.appender.out=org.apache.log4j.ConsoleAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%F\:%L] -- %m%n
log4j.logger.org.apache=INFO
###2、在src/main/resources下创建generatorConfig.xml
在pom.xml里面已经加入了mybatis-generator-maven-plugin插件。运用Mybatis逆向工程生成映射类mapper.java、po、mapper.xml文件到对应的包。相关博客:Mybatis逆向工程Generator。这里踩了坑。在maven里面使用这个插件有个痛点就是每次启动Tomcat的时候这个插件都会执行一次,生成相应的文件。po类等文件都能覆盖掉,但是不会覆盖*.xml文件。相当于把里面的代码copy了一次追加在后面。
这时候启动就会报错:java.lang.IllegalArgumentException: Result Maps collection already contains value for com.sm.mapper.UserMapper.BaseResultMap
网上有相关博客和解决办法:
mybatis-generator重新生成代码时的SQL映射文件覆盖
Mybatis code generator1.3.4版本 XML 文件重新生成不会覆盖原文件
我这里是创建好依赖,写好配置文件generatorConfig.xml之后,在Maven-Projects里面手动执行了一次mybatis-generator:generate,生成相应文件之后我就把pom.xml里面的gengerator依赖注释掉了。相当于就用一次,这里写demo倒是无关紧要。推荐还是自己写个逆向工程的工具项目,这样有需要就跑一次,copy过来就好了。
generatorConfig.xml
这里有个坑爹的地方就是要自己指定本地的数据库连接驱动jar包,配置中的< classPathEntry / >标签。
上面配置的输出文件的位置很重要,mapper.xml一定要输出在resources下面,并且包结构要和UserMapper.java所在包结构一样。
双击:
就会发现指定包下已经生成了User.java等文件:
###3、开发controller、service、serviceImpl
UserService.java
package com.sm.service;
import com.sm.po.User;
/**
* Created by Mistra.WR on 2017/11/10/010.
*/
public interface UserService {
int insertSelective(User user);
}
UserServiceImpl.java
package com.sm.serviceimpl;
import com.sm.mapper.UserMapper;
import com.sm.po.User;
import com.sm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by Mistra.WR on 2017/11/10/010.
*/
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapperDao;
public int insertSelective(User user) {
return userMapperDao.insertSelective(user);
}
}
UserAddController.java
package com.sm.controller;
import com.sm.po.User;
import com.sm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* Created by Mistra.WR on 2017/11/10/010.
*/
@Controller
@RequestMapping("/userAdd")
public class UserAddController {
@Autowired
private UserService userService;
@RequestMapping("/index.do")
public String addPage(){
return "addUser";
}
@RequestMapping("/userAdd.do")
public String UserAdd(User user, Model model){
if(userService.insertSelective(user)>0){
model.addAttribute("successMsg", "注册成功!");
model.addAttribute("name", user.getUsername());
return "success";//返回的页面
}else{
model.addAttribute("failMsg", "注册失败!");
return "fail";
}
}
}
###4、在src/main/resources下创建mybatis的配置文件mybatis-config.xml
这个配置文件相当于用来给实体类定义别名。
mybatis-config.xml
###5、在src/main/resources下创建spring-mybatis.xml
spring和mybatis整合的重要文件。
###6、在src/main/resources下创建spring-mvc.xml
###5、配置web.xml
contextConfigLocation
classpath:spring-mybatis.xml
log4jConfigLocation
classpath:log4j.properties
spring监听器
org.springframework.web.context.ContextLoaderListener
log4j监听器
org.springframework.web.util.Log4jConfigListener
org.springframework.web.util.IntrospectorCleanupListener
spring mvc servlet
springMvc
org.springframework.web.servlet.DispatcherServlet
spring mvc 配置文件
contextConfigLocation
classpath:spring-mvc.xml
1
springMvc
*.do
字符集过滤器
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
字符集编码
encoding
UTF-8
encodingFilter
/*
60
index.jsp
###6、jsp
addUser.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
添加用户
" method="post">
用户名:
密 码:
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
注册成功
代码完成时的包结构:
##三、测试
跑起来!
输入请求地址:http://localhost:8080/mistrasssmmm/userAdd/index.do
返回success.jsp
数据插入完成
此实例
源码GitHub地址:MistraR/MistraRSSSMMM
CSDN:CSDN下载地址
欢迎一起交流学习!