1.项目的模块划分
项目处于对汽车4s维修店出发,总共有6个模块,其中包括维修工单管理、结算订单管理、还车管理、登录管理、汽车配件管理、系统管理,核心模块为维修工单管理与结算订单管理
2.项目的主要技术
项目后台框架采用 mybatis+spring+springmvc 前端使用的是layui
权限使用的是shiro框架 分页使用的是mybatis的插件pagehelper 对配件的查询使用了Lucene技术 登录实现了三方登录(维修登录) 对订单查询实现了cxf技术
GitHub地址:https://github.com/createMoreByMe/rpms.git
1.项目结构
采用分模块开发
2.basic-core 基本核心代码模块
basic-core主要放入我们总项目的基本父类
1.BaseMapper
package cn.xxx.basic.mapper;
import cn.xxx.basic.query.BaseQuery;
import com.github.pagehelper.Page;
import java.util.List;
/**
* 基本的CRUD和分页查询的父类
* @param
*/
public interface BaseMapper {
void insert(T t);
void deleteByPrimaryKey(Long id);
void updateByPrimaryKey(T t);
T selectByPrimaryKey(Long id);
List selectAll();
/**根据分页条件得到查询结果
* @param query
* @return
*/
Page loadDataByQuery(BaseQuery query);
}
2.IBaseService
基本service的接口,定义我们需要的crud接口方法
package cn.xxx.basic.service;
import cn.xxx.basic.query.BaseQuery;
import cn.xxx.basic.utils.PageList;
import java.util.List;
public interface IBaseService {
void add(T t);
void delete(Long id);
void update(T t);
T get(Long id);
List getAll();
/**根据分页条件返回查询结果
* @param query
* @return
*/
PageList queryPage(BaseQuery query);
}
3.BaseServiceImpl
基本service的实现,这里的事物是通过后面Springaop的配置加入事务,并且采用钩子的思想,将子类联系在一起,子类不需要在配置事物
package cn.xxx.basic.service.impl;
import cn.xxx.basic.mapper.BaseMapper;
import cn.xxx.basic.query.BaseQuery;
import cn.xxx.basic.service.IBaseService;
import cn.xxx.basic.utils.PageList;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import java.util.List;
public abstract class BaseServiceImpl implements IBaseService {
//Basic没有引入spring相关包,不能使用注解注入,在具体service上实现本方法
protected abstract BaseMapper getMapper();
@Override
public void add(T t) {
getMapper().insert(t);
// int i=1/0;
}
@Override
public void delete(Long id) {
getMapper().deleteByPrimaryKey(id);
}
@Override
public void update(T t) {
getMapper().updateByPrimaryKey(t);
}
@Override
public T get(Long id) {
return getMapper().selectByPrimaryKey(id);
}
@Override
public List getAll() {
return getMapper().selectAll();
}
/**
* 返回的pageList对象 其中含有总条数 和总数据
*/
@Override
public PageList queryPage(BaseQuery query) {
Page objects = PageHelper.startPage(query.getPage(), query.getLimit());
//拿到分页后的总数据
getMapper().loadDataByQuery(query);
return new PageList<>(objects.getTotal(), objects.getResult());
}
}
4.BasePage
基本分页功能,这里考虑到layui需要的分页数据,所以在字段提供 页数page和条数limit
package cn.xxx.basic.query;
//基本查询对象
public class BaseQuery {
private Integer page=1;
private Integer limit=10;
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getLimit() {
return limit;
}
public void setLimit(Integer limit) {
this.limit = limit;
}
}
4.pom.xml
需要导入工具的依赖
carservice-total
cn.xxx.myteam
1.0-SNAPSHOT
4.0.0
basic-core
basic-utils
cn.xxx.myteam
1.0-SNAPSHOT
junit
junit
4.11
test
javax.servlet
servlet-api
2.4
provided
com.github.pagehelper
pagehelper
5.0.1
basic-core
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-war-plugin
3.2.0
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
3.rpms-common
项目的domain和query
pom.xml
carservice-total
cn.xxx.myteam
1.0-SNAPSHOT
4.0.0
prms-mapper
E:/soft/software/idea/workspace/carservice-total
rpms-common
cn.xxx.myteam
${project.version}
basic-core
cn.xxx.myteam
${project.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-test
${spring.version}
junit
junit
3.8.1
test
org.mybatis
mybatis
3.2.3
mysql
mysql-connector-java
5.1.20
commons-dbcp
commons-dbcp
1.3
log4j
log4j
1.2.17
org.mybatis
mybatis-spring
1.2.2
cglib
cglib
2.2.2
junit
junit
4.11
test
org.mybatis.generator
mybatis-generator-core
1.3.5
crm-mapper
org.apache.maven.plugins
maven-compiler-plugin
1.8
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
true
true
4.rpms-mapper
项目的dao层,操作数据库
在这里插入代码片
carservice-total
cn.xxx.myteam
1.0-SNAPSHOT
4.0.0
rpms-service
cn.xxx.myteam
prms-mapper
${project.version}
junit