该篇博客使用idea 工具逐步完成 SSM框架的搭建。
idea 创建项目可参照 :Spring MVC 基于HTML 教程 (二)进行项目的创建,此处不再赘述。
项目结构如下:
1. 引入相关依赖,完整依赖如下:
4.0.0
com.dongl
ssm
1.0-SNAPSHOT
war
ssm Maven Webapp
http://www.example.com
UTF-8
1.8
1.8
5.1.5.RELEASE
1.7.25
1.2.17
3.4.5
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-aop
${spring.version}
org.aspectj
aspectjweaver
1.9.4
org.springframework
spring-tx
${spring.version}
javax.servlet
servlet-api
2.5
provided
javax.servlet
jsp-api
2.0
provided
org.springframework
spring-jdbc
${spring.version}
mysql
mysql-connector-java
5.1.47
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.3.2
c3p0
c3p0
0.9.1.2
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
com.alibaba
fastjson
1.2.47
net.sf.json-lib
json-lib
2.4
jdk15
junit
junit
4.11
test
ssm
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
maven-surefire-plugin
2.22.1
maven-war-plugin
3.2.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
2. 创建表结构,及相关的dao 和service层接口
2.1 创建user 表,表结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` date DEFAULT NULL COMMENT '生日',
`sex` char(1) DEFAULT NULL COMMENT '性别',
`address` varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
2.2 定义实体类 User
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
get/set 方法自己生成。
2.3 定义dao和service相关接口
// dao 的实现类可以有mybatis的代理实现,项目中可不必实现
public interface UserDao {
public List findAll();
public User findById(Integer id);
public int save(User user);
public int deleteById(Integer id);
}
service层接口
public interface UserService {
public List findAll();
public User findById(Integer id);
public int save(User user);
public int deleteById(Integer id);
}
service层实现类:
@Service("userService")
public class UserServiceImpl implements UserService {
@Override
public List findAll() {
return null;
}
@Override
public User findById(Integer id) {
return null;
}
@Override
public int save(User user) {
return 0;
}
@Override
public int deleteById(Integer id) {
return 0;
}
}
2.4 通过spring 配置管理dao和service接口
以上dao和service 接口只有放入到容器中才能实现注解方式,因此创建spring配置文件,applicationcontext.xml 文件。
配置好 applicationcontext.xml 文件后,即可在 UserServiceImpl.java 类上使用 @Service("userService") 注解。
3.1 在 web.xml 文件中配置前端控制器,springmvc.xml等,完整配置如下:
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
dispatcherServlet
/
login.html
login.htm
login.jsp
3.2 配置 springmvc.xml 文件
3.3 创建 对应的目录,目录结构如下:
在Spring整合Springmvc 时,需要服务启动时 加载 applicationContext.xml 文件,用于将Spring实例交给容器管理。这时可以使用监听器进行 applicationContext.xml 的初始化。因此需要在 web.xml 中配置监听器,配置如下:
org.springframework.web.context.ContextLoaderListener
由于该监听器默认 加载WEB-INF 目录下的 applicationContext.xml 文件,因此需要指定 applicationContext.xml 文件所在路径。
contextConfigLocation
classpath:applicationContext.xml
通过以上配置,即可在控制类中使用:@Autowired 注入实体。
web.xml 的完整配置,如下:
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
dispatcherServlet
/
login.html
login.htm
login.jsp
五 、Spring整合Mybatis
5.1 新建 spring-mybatis.xml 配置文件,在配置文件中配置mybatis 相关内容。配置如下:
5.2 在applicationContext.xml 配置文件中,引入 spring-mybatis.xml 配置。
5.3 在配置完以上配置后,即可对数据库进行查询操作,添加事务之后可进行其他操作。
在Dao 层添加注解 @Repository
@Repository
public interface UserDao {
@Select("SELECT * FROM `user`")
public List findAll();
}
在service 层进行接口注入
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List findAll() {
System.out.println("userService 的findAll 查询");
List userList = userDao.findAll();
return userList;
}
}
5.4 添加事务处理
在spring-mybatis.xml 文件 中添加 事务配置,具体配置如下:
进行数据保存测试
在Dao层实现如下:
@Insert("INSERT INTO `user` (username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address});")
public int save(User user);
spring-mybatis.xml 的完整配置文件,如下: