1、集成SSM
集成步骤
1.创建web工程,拷贝SSM需要jar
2.创建相关组件 :domain,mapper,mapper.xml,service,controller,jsp
3.Spring的核心配置文件:application-context.xml
3.1.创建jdbc.properties :四大金刚
3.2.引入jdbc.properties
3.3.配置DataSource :四大金刚
3.4.配置MyBatis:配置SqlSessionFactory
3.4.1.配置mybatis-config.xml核心配置文件
3.4.2.配置mapper.xml
3.4.3.实体类的别名
3.4.4.把DataSource交给SqlSessionFactory
3.5.配置映射器接口 Mapper接口
3.6.配置service的ioc自动扫描 : @Service
3.7.事务管理器配置
3.7.1.配置datasource注入
3.8.开启事务的注解驱动支持
4.SpringMvc的核心配置文件:application-mvc.xml
4.1.静态资源放行
4.2.controller的ioc注解扫描 :@Controller
4.3.视图解析器
4.4.SpringMVC注解支持 <mvc:annotation-driven> :@ResponseBody
5.servelt配置文件:web.xml
5.1.全局配置:Spring的核心配置文件的地址
5.2.加载Spring的上下文:SpringContextListnner 监听
5.3.配置SpringMVC的核心控制器
5.4.配置SpringMVC的配置文件
5.5.编码过滤器
2、创建domain、mapper、service、controller、query及抽取公共类
抽取公共类,抽取后员工、部门等实体类只需要继承即可
Domain:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BaseDomain {
private Long id;
}
Mapper
public interface BaseMapper<T,ID extends Serializable,Q> {
void insert(T t);
void update(T t);
void delete(ID id);
T selectById(ID id);
List<T> selectAll();
//分页查询:总条数
int selectForCount(Q query);
//分页查询:列表
List<T> selectForList(Q query);
}
Query
在这里插入代码片
Service
public interface BaseService<T,ID extends Serializable,Q> {
void insert(T t);
void update(T t);
void delete(ID id);
T selectById(ID id);
List<T> selectAll();
//分页查询:总条数
int selectForCount(Q query);
//分页查询:列表
List<T> selectForList(Q query);
}
Department
public interface DepartmentService extends BaseService<Department,Long,DepartmentQuyer>{
}
ServiceImpl
@Transactional
public class BaseServiceImpl<T,ID extends Serializable,Q>
implements BaseService<T,ID,Q> {
@Autowired
private BaseMapper<T,ID,Q> baseMapper;
@Override
public void insert(T t) { baseMapper.insert(t); }
@Override
public void update(T t) { baseMapper.update(t); }
@Override
public void delete(ID id) { baseMapper.delete(id); }
@Override
public T selectById(ID id) { return baseMapper.selectById(id); }
@Override
public List<T> selectAll() { return baseMapper.selectAll(); }
@Override
public int selectForCount(Q query) { return baseMapper.selectForCount(query); }
@Override
public List<T> selectForList(Q query) { return baseMapper.selectForList(query); }
}
DepartmentServiceImpl
@Service
public class DepartmentServiceImpl
extends BaseServiceImpl<Department,Long,DepartmentQuyer>
implements DepartmentService {
}
多模块
架构:
依赖
- 把CRM项目中的持久层独立出来,抽取成hrm-mapper
- 把CRM项目中的业务层独立处理,抽取成hrm-service
- 把CRM项目中的web层独立出来,抽取成hrm-web
- 把CRM项目中的Domain和Query抽取成hrm-common
- 把所有项目都可以使用的工具抽取出来,抽取成 base-util
- 把所有项目都可以用的公共组件抽取出来,抽取成base-core
jar包的统一管理
dependencies
通常我们再pom.xml中导入依赖就是使用的是dependencies
元素,把jar包放在它的下面即可,如果使用了多模块结果,在父工程中的pom.xml中的dependencies
元素下面放置了一些jar包,那么所有的子项目是可以直接使用这些jar包的,这样一来我们就可以把所有子模块都可以用到的jar包放到父模块的的dependencies
元素中,达到一个公共的jar包的统一导入的效果,注意:一定是所有子模块都会用到的jar包才放入进去,比如 junit-test。
2.3.dependencyManagement
dependencyManagement
这个元素是用来管理或者叫着声明依赖的 ,虽然这个元素下面也可以放jar包但是它和dependencies
有显著的区别,如果在父工程的pom.xml中的dependencyManagement
元素中放了一些jar包,那么这些jar包是不能被子模块直接使用的,如果子模块想要用到父项目的dependencyManagement
中的jar包,子模块需要在自己的pom.xml中的dependencies
元素中导入相关的jar包,只是版本号不用写。
通常情况下我们可以把部分部分子模块会用到的jar包放到父工程的pom.xml中的dependencyManagement
元素下面,然后这些子模块在自己的dependencies
中去导入jar包,不写版本号,那么多个子模块都是沿用的父工程的jar的版本号,这样就实现了版本号的统一管理。