天呐,这年代居然还有这么整洁的手写sql的dao层(后台持久层代码实现)

 如下为之前写的一个教程模板:

@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();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_45593609/article/details/105806341