如下为之前写的一个教程模板:
@Repository
public class GoalRepositority {
@Autowired
private EntityManager entityManager;
/**
* 新增安全目标方法
*
* @param map
* 前台返回的表单数据
* @return 添加成功的主键ID
*/
public String insertGoal(Map<String, Object> map) {
// 生成新增数据ID
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
map.put("goalId", uuid);
String str = StringUtil.toString(map.get("status"));
// 拼接sql语句
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" insert into t_sg_goal ( ");
sqlBuffer.append(" goal_id, ");
sqlBuffer.append(" goal_name, ");
sqlBuffer.append(" year_info, ");
sqlBuffer.append(" hundred_day_num, ");
sqlBuffer.append(" remark, ");
sqlBuffer.append(" view_count, ");
sqlBuffer.append(" status, ");
if (str.equals("0")) {
sqlBuffer.append(" publish_user_id, ");
sqlBuffer.append(" publish_user_name, ");
sqlBuffer.append(" publish_time, ");
}
sqlBuffer.append(" create_org_id, ");
sqlBuffer.append(" create_org_name, ");
sqlBuffer.append(" create_dept_id, ");
sqlBuffer.append(" create_dept_name, ");
sqlBuffer.append(" create_user_id, ");
sqlBuffer.append(" create_user_name, ");
sqlBuffer.append(" create_time ");
sqlBuffer.append(" ) values ( ");
sqlBuffer.append(" ?1, ");
sqlBuffer.append(" ?2, ");
sqlBuffer.append(" ?3, ");
sqlBuffer.append(" ?4, ");
sqlBuffer.append(" ?5, ");
sqlBuffer.append(" ?6, ");
sqlBuffer.append(" ?7, ");
if (str.equals("0")) {
sqlBuffer.append(" ?8 , ");
sqlBuffer.append(" ?9 , ");
sqlBuffer.append(" NOW() , ");
}
sqlBuffer.append(" ?10, ");
sqlBuffer.append(" ?11, ");
sqlBuffer.append(" ?12, ");
sqlBuffer.append(" ?13, ");
sqlBuffer.append(" ?14, ");
sqlBuffer.append(" ?15, ");
sqlBuffer.append(" STR_TO_DATE(?16,'%Y-%m-%d %H:%i:%s') ");
sqlBuffer.append(" ) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, map.get("goalId"));
query.setParameter(2, map.get("goalName"));
query.setParameter(3, StringUtil.toInt(StringUtil.toString(map.get("yearInfo")), 0));
query.setParameter(4, map.get("hundredDayNum"));
query.setParameter(5, map.get("remark"));
query.setParameter(6, StringUtil.toInt(StringUtil.toString(map.get("viewCount")), 0));
query.setParameter(7, str);
if (str.equals("0")) {
query.setParameter(8, map.get(Constant.SESSION_USER_ID));
query.setParameter(9, map.get(Constant.SESSION_USER_NAME));
}
query.setParameter(10, StringUtil.toString(map.get(Constant.SESSION_USER_ORG_ID)));
query.setParameter(11, StringUtil.toString(map.get(Constant.SESSION_USER_ORG_NAME)));
query.setParameter(12, StringUtil.toString(map.get(Constant.SESSION_USER_DEPT_ID)));
query.setParameter(13, StringUtil.toString(map.get(Constant.SESSION_USER_DEPT_NAME)));
query.setParameter(14, map.get(Constant.SESSION_USER_ID));
query.setParameter(15, map.get(Constant.SESSION_USER_NAME));
query.setParameter(16, map.get("createTime"));
query.executeUpdate();
return uuid;
}
/**
* 更新安全目标
*
* @param map
* 前台返回的表单数据
* @return 该条数据的主键ID
*/
public String updateGoal(Map<String, Object> map) {
String str = StringUtil.toString(map.get("status"));
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" update t_sg_goal set ");
sqlBuffer.append(" goal_name =?1, ");
sqlBuffer.append(" year_info =?2, ");
sqlBuffer.append(" hundred_day_num =?3, ");
sqlBuffer.append(" remark =?4, ");
sqlBuffer.append(" status =?5, ");
if (str.equals("0")) {
sqlBuffer.append(" publish_user_id =?6, ");
sqlBuffer.append(" publish_user_name =?7, ");
sqlBuffer.append(" publish_time = NOW(), ");
}
sqlBuffer.append(" modify_user_id =?8, ");
sqlBuffer.append(" modify_user_name =?9, ");
sqlBuffer.append(" modify_time = NOW() ");
sqlBuffer.append(" where goal_id = ?10 ");
map.put("createUserId", StringUtil.toString(map.get(Constant.SESSION_USER_ORG_ID)));
map.put("createUserName", StringUtil.toString(map.get(Constant.SESSION_USER_ORG_NAME)));
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, map.get("goalName") == null ? "" : map.get("goalName"));
query.setParameter(2, StringUtil.toInt(StringUtil.toString(map.get("yearInfo")), 0));
query.setParameter(3, map.get("hundredDayNum"));
query.setParameter(4, map.get("remark") == null ? "" : map.get("remark"));
query.setParameter(5, str == null ? "" : str);
if (str.equals("0")) {
query.setParameter(6, map.get(Constant.SESSION_USER_ID));
query.setParameter(7, map.get(Constant.SESSION_USER_NAME));
}
query.setParameter(8, map.get(Constant.SESSION_USER_ID));
query.setParameter(9, map.get(Constant.SESSION_USER_NAME));
query.setParameter(10, map.get("goalId"));
query.executeUpdate();
return StringUtil.toString(map.get("goalId"));
}
/**
* 删除单条或多条记录
*
* @param goalIds
* 要删除的ID数组
* @return 删除成功的条数
*/
public int deleteGoals(List<String> goalIds) {
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" delete from t_sg_goal where ");
sqlBuffer.append(" goal_id in ( ");
for (int i = 0; i < goalIds.size() - 1; i++) {
sqlBuffer.append(" ?, ");
}
sqlBuffer.append(" ?) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
for (int i = 0; i < goalIds.size(); i++) {
query.setParameter(i + 1, goalIds.get(i));
deleteCascade(goalIds);
}
return query.executeUpdate();
}
/**
* 分页查询 总数量
*
* @param map
* 获取前台传的分页数据以及查询条件
* @return 符合条件的数据总数量
*/
public int getGoalCount(Map<String, Object> map) {
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" select count(goal_id) sum from t_sg_goal where 1=1 ");
Integer yearInfo = 0;
if (StringUtil.toString(map.get("yearInfo")) == "" || StringUtil.toString(map.get("yearInfo")) == null) {
} else {
yearInfo = Integer.parseInt(StringUtil.toString(map.get("yearInfo")));
}
// 获取登录人权限
String createOrgId = StringUtil.toString(map.get(Constant.SESSION_CURRENT_ORG_ID));
String currentOrgId = StringUtil.toString(map.get(Constant.SESSION_CURRENT_ORG_ID));
String userOrgId = StringUtil.toString(map.get(Constant.SESSION_USER_ORG_ID));
if (!currentOrgId.equals(userOrgId)) {
sqlBuffer.append(" and status = '0' ");
}
if (yearInfo != 0) {
sqlBuffer.append(" and year_info = ?1 ");
}
sqlBuffer.append(" and create_org_id = ?2 ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
// 封装为map
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
if (yearInfo != 0) {
query.setParameter(1, yearInfo);
}
// 添加登陆人单位条件
query.setParameter(2, createOrgId);
List<Map<String, Object>> list = query.getResultList();
return StringUtil.toInt(list.get(0).get("sum"), 0);
}
/**
* 分页查询 数据
*
* @param yearInfo
* 年度
* @param pageIndex
* 页码
* @param pageSize
* 每页条数
* @return 对应的展示数据集合
*/
public List<Map<String, Object>> getAllGoal(Map<String, Object> map) {
// 页面排序条件
String paramStr = StringUtil.toString(map.get("orderParam"));// 排序字段,驼峰命名
String orderType = StringUtil.toString(map.get("orderType"));// 排序类型,倒序为desc
String orderParam = CommonUtils.changeParamToColumn(paramStr);// 处理后的排序字段
Integer pageIndex = StringUtil.toInt(map.get("pageIndex"), 1);
Integer pageSize = StringUtil.toInt(map.get("pageSize"), 15);
pageIndex = (pageIndex - 1) * pageSize;
Integer yearInfo = StringUtil.toInt(map.get("yearInfo"), 0);
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" select goal_id goalId, ");
sqlBuffer.append(" goal_name goalName, ");
sqlBuffer.append(" year_info yearInfo, ");
sqlBuffer.append(" hundred_day_num hundredDayNum, ");
sqlBuffer.append(" remark remark, ");
sqlBuffer.append(" view_count viewCount, ");
sqlBuffer.append(" status status, ");
sqlBuffer.append(" DATE_FORMAT(publish_time,'%Y-%m-%d %H:%i:%s') publishTime, ");
sqlBuffer.append(" create_org_id createOrgId, ");
sqlBuffer.append(" create_org_name createOrgName, ");
sqlBuffer.append(" create_dept_id createDeptId, ");
sqlBuffer.append(" create_dept_name createDeptName, ");
sqlBuffer.append(" create_user_id createUserId, ");
sqlBuffer.append(" create_user_name createUserName, ");
sqlBuffer.append(" DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') createTime, ");
sqlBuffer.append(" modify_user_id modifyUserId, ");
sqlBuffer.append(" modify_user_name modifyUserName, ");
sqlBuffer.append(" DATE_FORMAT(modify_time,'%Y-%m-%d %H:%i:%s') modifyTime ");
sqlBuffer.append(" from t_sg_goal where 1=1 ");
// 判定年度条件
if (yearInfo != 0) {
sqlBuffer.append(" and year_info = ?1 ");
}
// 添加登陆人过滤信息
String currentOrgId = StringUtil.toString(map.get(Constant.SESSION_CURRENT_ORG_ID));
String userOrgId = StringUtil.toString(map.get(Constant.SESSION_USER_ORG_ID));
if (!currentOrgId.equals(userOrgId)) {
sqlBuffer.append(" and status = '0 ' ");
}
sqlBuffer.append(" and create_org_id = ?4 ");
// 根据页面进行排序
if (!"".equals(orderParam)) {
if ("ascending".equals(orderType)) {
orderType = "asc";
} else {
orderType = "desc";
}
sqlBuffer.append(" order by " + orderParam + " " + orderType);
} else {
// 默认排序
sqlBuffer.append(" order by status desc,create_time desc ");
}
sqlBuffer.append(" limit ?2,?3 ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
// 封装为map
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
if (yearInfo != 0) {
query.setParameter(1, yearInfo);
}
query.setParameter(2, pageIndex);
query.setParameter(3, pageSize);
// 添加登陆人单位条件
query.setParameter(4, StringUtil.toString(map.get(Constant.SESSION_CURRENT_ORG_ID)));
List<Map<String, Object>> list = query.getResultList();
return list;
}
/**
* 获取要修改或查看的数据
*
* @param goalId
* 获取哪一个ID的数据
* @return 将该ID的所有数据返回
*/
public List<Map<String, Object>> beforeUpdate(String goalId) {
StringBuffer sqlBuffer = new StringBuffer();
// 拼接sql语句
sqlBuffer.append(" select goal_id goalId, ");
sqlBuffer.append(" goal_name goalName, ");
sqlBuffer.append(" year_info yearInfo, ");
sqlBuffer.append(" hundred_day_num hundredDayNum, ");
sqlBuffer.append(" remark remark, ");
sqlBuffer.append(" view_count viewCount, ");
sqlBuffer.append(" status status, ");
sqlBuffer.append(" DATE_FORMAT(publish_time,'%Y-%m-%d %H:%i:%s') publishTime, ");
sqlBuffer.append(" create_org_id createOrgId, ");
sqlBuffer.append(" create_org_name createOrgName, ");
sqlBuffer.append(" create_dept_id createDeptId, ");
sqlBuffer.append(" create_dept_name createDeptName, ");
sqlBuffer.append(" create_user_id createUserId, ");
sqlBuffer.append(" create_user_name createUserName, ");
sqlBuffer.append(" DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') createTime, ");
sqlBuffer.append(" modify_user_id modifyUserId, ");
sqlBuffer.append(" modify_user_name modifyUserName, ");
sqlBuffer.append(" DATE_FORMAT(modify_time,'%Y-%m-%d %H:%i:%s') modifyTime ");
sqlBuffer.append(" from t_sg_goal where goal_id = ?1 ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, goalId);
// 封装为map
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
countView(goalId);
return query.getResultList();
}
/***
* 获取浏览次数
*
* @param goalId
* 获取查看的哪个ID
*/
public void countView(String goalId) {
StringBuffer sqlBuffer = new StringBuffer();
// 默认为0,每次调用加一
sqlBuffer.append(" update t_sg_goal set view_count = view_count+1 ");
sqlBuffer.append(" where goal_id = ?1 ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, goalId);
int num = query.executeUpdate();
}
/***
* 附件保存
*
* @param map
* 前台封装数据
* @return 返回新增附件成功条数
*/
public int insertFile(Map<String, Object> map) {
// 插入sql语句
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" insert into t_sys_file (id,file_name,file_type,file_addr,table_name,table_id, ");
sqlBuffer.append(" create_user_id,create_user_name,create_time) ");
sqlBuffer.append(" values(?1,?2,?3,?4,?5,?6,?7,?8,now() ) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
String id = UUID.randomUUID().toString().replaceAll("-", "");
query.setParameter(1, id);
query.setParameter(2, StringUtil.toString(map.get("fileName")));
query.setParameter(3, StringUtil.toString(map.get("fileType")));
query.setParameter(4, StringUtil.toString(map.get("fileAddr")));
query.setParameter(5, "t_sg_goal");
query.setParameter(6, StringUtil.toString(map.get("goalId")));
query.setParameter(7, StringUtil.toString(map.get("createUserId")));
query.setParameter(8, StringUtil.toString(map.get("createUserName")));
return query.executeUpdate();
}
/**
* 删除附件单条或多条记录
*
* @param Ids
* 封装要删除的附件ID数组
* @return 删除成功条数
*/
public int deleteFile(Map<String, Object> map) {
List<String> fileIds = new ArrayList<>();
fileIds = (List<String>) map.get("ids");
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" delete from t_sys_file where ");
sqlBuffer.append(" id in ( ");
for (int i = 0; i < fileIds.size() - 1; i++) {
sqlBuffer.append(" ?, ");
}
sqlBuffer.append(" ?) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
for (int i = 0; i < fileIds.size(); i++) {
query.setParameter(i + 1, StringUtil.toString(fileIds.get(i)));
}
return query.executeUpdate();
}
/**
* 级联删除附件单条或多条记录
*
* @param goalIds
* 删除该ID数组下的所有附件
* @return 删除成功条数
*/
public int deleteCascade(List<String> goalIds) {
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append(" delete from t_sys_file where ");
sqlBuffer.append(" table_id in ( ");
for (int i = 0; i < goalIds.size() - 1; i++) {
sqlBuffer.append(" ?, ");
}
sqlBuffer.append(" ?) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
for (int i = 0; i < goalIds.size(); i++) {
query.setParameter(i + 1, StringUtil.toString(goalIds.get(i)));
}
return query.executeUpdate();
}
/**
* 查询附件数据
*
* @param id
* 查看的ID
* @return 该ID下的附件数据
*/
public List<Map<String, Object>> getAllFile(String id) {
StringBuffer sqlBuffer = new StringBuffer();
// 拼接sql语句
sqlBuffer.append(" select ");
sqlBuffer.append(" id, ");
sqlBuffer.append(" file_name fileName, ");
sqlBuffer.append(" file_type fileType, ");
sqlBuffer.append(" file_addr fileAddr ");
sqlBuffer.append(" from t_sys_file where 1=1 ");
sqlBuffer.append(" and table_id = ?1 ");
sqlBuffer.append(" order by create_time ");
System.out.println(sqlBuffer);
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, id);
// 封装为map
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> list = query.getResultList();
return list;
}
/**
* 发布多条更新
*
* @param ids
* 发布的ID数组
* @return 成功条数
*/
public int releaseGoalList(Map<String, Object> map) {
StringBuffer sqlBuffer = new StringBuffer();
// 获取发布数据goalID
List<String> goalIdsList = new ArrayList<String>();
goalIdsList = (List<String>) map.get("goalIds");
// 拼接字符串
sqlBuffer.append(" update t_sg_goal set ");
sqlBuffer.append(" status = 0, ");
sqlBuffer.append(" publish_time = NOW(), ");
sqlBuffer.append(" publish_user_id = ?, ");
sqlBuffer.append(" publish_user_name = ? ");
sqlBuffer.append(" where goal_id in ( ");
for (int i = 0; i < goalIdsList.size(); i++) {
if (i == goalIdsList.size() - 1) {
sqlBuffer.append(" ? ");
} else {
sqlBuffer.append(" ?, ");
}
}
sqlBuffer.append(" ) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, map.get(Constant.SESSION_USER_ID));
query.setParameter(2, map.get(Constant.SESSION_USER_NAME));
for (int i = 0; i < goalIdsList.size(); i++) {
query.setParameter(i + 3, StringUtil.toString(goalIdsList.get(i)));
}
return query.executeUpdate();
}
/**
* 撤回多条更新
*
* @param map
* 要撤回的ID数组
* @return 撤回成功条数
*/
public int recallGoalList(Map<String, Object> map) {
StringBuffer sqlBuffer = new StringBuffer();
List<String> goalIds = new ArrayList<>();
goalIds = (List<String>) map.get("goalIds");
// 拼接字符串
sqlBuffer.append(" update t_sg_goal set ");
sqlBuffer.append(" status = 1, ");
sqlBuffer.append(" modify_time = NOW(), ");
sqlBuffer.append(" modify_user_id = ?, ");
sqlBuffer.append(" modify_user_name = ? ");
sqlBuffer.append(" where goal_id in ( ");
for (int i = 0; i < goalIds.size(); i++) {
if (i == goalIds.size() - 1) {
sqlBuffer.append(" ? ");
} else {
sqlBuffer.append(" ?, ");
}
}
sqlBuffer.append(" ) ");
Query query = entityManager.createNativeQuery(sqlBuffer.toString());
query.setParameter(1, map.get(Constant.SESSION_USER_ID));
query.setParameter(2, map.get(Constant.SESSION_USER_NAME));
for (int i = 0; i < goalIds.size(); i++) {
query.setParameter(i + 3, StringUtil.toString(goalIds.get(i)));
}
return query.executeUpdate();
}
}