注解开发@Select使用<foreach>

本文介绍了一种使用MyBatis注解完全替代XML配置文件的方法,通过@Select注解结合foreach元素,实现根据参数集合动态生成SQL查询语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Select("<script> select name from subject where id in <foreach item='item' index='index' collection='subjectIds'  
         open='(' separator=',' close=')'> #{item} </foreach> </script>")
ArrayList<String> getSubject(@Param("subjectIds") ArrayList<Integer> subjectIds);

说明:上述方式其实是一种注解完全代替xml的方法。

其中的foreach的collection直接写成@param中的值,item的值与#{}中的值一致即可。

引用:https://www.cnblogs.com/java-zhao/p/5489269.html

目录 员工管理: 删除员工: Controller层: Service层: Mapper接口: 接受参数的两种方式: 修改员工: 查询回显: Controller层: Service层: Mapper接口: 修改数据: Controller层: Service层: Mapper接口: 程序优化: 员工信息统计: 职位统计开发 Controller层: Service层: Mapper接口: 性别统计: 员工管理: 删除员工: 明确三层架构职责: Controller层: 1.接受参数(ID值) 2.调用Service层 3.响应结果 Service层: 1.调用Mapper接口方法,批量删除员工基本信息 2.调用Mapper接口方法,批量删除员工的工作经历信息 Mapper接口: 执行SQL语句 接受参数的两种方式: 方式一:在Controller方法中通过数组来接收 @DeleteMapping public Result delete(Integer[] ids){ log.info("根据id删除员工:{}",ids); return Result.success(); } 方法二:在Controller方法中通过集合来接收 public Result delete(@RequestParam List<Integer> ids){ log.info("根据id批量删除员工:{}",ids); return Result。success(); } Service层: @Transactional(rollbackFor = {Exception.class}) public void deleteByIds(List<Integer> ids){ //1.根据ID删除员工基本信息 empMapper.deleteByIds(ids); //2.根据ID删除员工的工作经历 empExprMapper.deleteByEmpIds(ids); } Mapper层xml: //根据ID批量删除员工信息 <delete id="deleteByIds"> delete from emp where id in <foreach collection="ids" item="id" separator="," open="(" close=")"> #{id} </foreach> </delete> //根据员工ID批量删除员工工作经历信息 <delete id="deleteByEmpIds"> delete from emp_expr where emp_id in <foreach collection="empIds" item="empId" separator="," open="(" close=")" #{empId} </foreach> </delete> 修改员工: 查询回显: 明确三层架构职责: Controller层: 1.接受参数(ID值) 2.调用Service层 3.响应结果 Service层: 1.调用Mapper接口方法,查询员工详细信息 Mapper接口: 执行SQL语句 方法实现: Controller层: //根据ID查询员工信息 @GetMapping("/{id}") public Result getInfo(@PathVariable Integer id){ log.info("根据ID查询员工信息:{}",id); Emp emp = empService.getInfo(id); return Result.success(emp); } Service层: @Override public Emp getInfo(Integer id){ return empMapper.getById(id); } Mapper层: //根据ID查询员工基本信息及员工的工作经历信息 <select id="empResultMap" resultType="包名"> select e.*,ee.id ee_id,ee.emp_id ee_empid,ee.begin ee_end,ee.end ee_end,ee.companyee_company, ee.job ee_job from emp e left join emp_expr ee on e.id = ee.emp_id where e.id = #{id} </select> //定义ResultMap手动封装属性 <resultM
03-17
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值