试了半天,终于找到了JdbcTemplate中in的用法,JdbcTemplate自己不能使用in,借助NamedParameterJdbcTemplate 能实现in的用法@Autowired private DataSource dataSource; //数据源注入即可使用
public void assignBatch(List<String> todoIds, String teamMemberId) { todoDao.assignBatch(todoIds,teamMemberId); //批量指派添加消息提醒 String sql = "select fm.id,sa.username,td.TODO_CONTENT from todo td \n" + "INNER JOIN ORG_MEMBER_INFO omi on td.TEAM_MEMBER_ID = OMI.id\n" + "INNER JOIN SYS_ACCOUNT sa on omi.sys_account_id = sa.id\n" + "INNER JOIN FAMILY_MEMBER fm on td.family_member_id = fm.id\n" + "where td.todo_id in (:todoIds)"; Map<String, Object> paramMap = new HashMap<>(); paramMap.put("todoIds", todoIds); NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); List<Map<String, Object>> mapList = namedParameterJdbcTemplate.queryForList(sql,paramMap); List<String> familyMemberIds = new ArrayList<>(); List<String> executorNames = new ArrayList<>(); List<String> todoContents = new ArrayList<>(); for(Map<String, Object> map : mapList){ for(String key : map.keySet()){ if(key.equals("ID")){ familyMemberIds.add(map.get(key).toString()); }else if(key.equals("USERNAME")){ executorNames.add(map.get(key).toString()); }else if(key.equals("TODO_CONTENT")){ todoContents.add(map.get(key).toString()); } } } for(int i = 0; i < familyMemberIds.size(); i ++){ iMessageService.addAdminMessage(familyMemberIds.get(i),"1","团队长已指派医生"+ executorNames.get(i) +"为你服务,内容为:"+todoContents.get(i),"指派服务"); } }
版权声明:本文为sinat_32247833原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。