springboot集成mybatis,使用注解的方式调用Oracle数据库存储过程。

目录

Bean

Dao

util

Service

Controller


Bean

准备返回的数据类型;


@Data
@Accessors(chain = true)
public class EduCanBalance {
    private String GSDM;
    private String gsmc;
    private String ZTH;
    private String KJND;
    private String KJQJ;

    // c、 d、 g、 h
    // 3 ~ 29
    private String c3;
    private String d3;
    private String c4;
    private String d4;
    // ... 省略属性若干;
}

Dao

使用注解调用存储过程;

@Mapper
public interface DyhsDao {

    @Options(statementType = StatementType.CALLABLE) // 表示调用存储过程;
    // Select注解中的参数包括了入参和出参;
    @Select("call edu_can_balance_report(#{gsdm_in},#{zth_in},#{kjnd_in},#{kjqj_in},  #{ResEduCanControl,mode=OUT,jdbcType=CURSOR,resultMap=EduCan} )")
  // ResEduCanControl在controller里面使用获取;
    @Results(id = "EduCan",value = {
        // @Result(column = "B5", property = "B5"),
        // @Result(column = "C5", property = "C5"),
        // @Result(column = "B6", property = "B6") 字段名和属性名不一致的写在这里对应;
        // 不写默认就是ResultType的类型EduCanBalance;
    })  // 此注解的id对应Select注解的resultMap; 
    // 包括 @Results 注解在内的四个注解必须要写!一个也不能少!
    @ResultType(com.jhzy.financeReport.entity.EduCanBalance.class)
    void callEduCanBalance(Map map);

}

util

工具类

public class Params {

    public static Map getParam(Map map) {
        String gsdm = map.get("gsdm").toString();
        String zth = map.get("zth").toString();
        String kjnd = map.get("kjnd").toString();
        String kjqj = map.get("kjqj").toString();

        map.put("gsdm_in", gsdm);
        map.put("zth_in", zth);
        map.put("kjnd_in", kjnd);
        map.put("kjqj_in", kjqj);
        return map;
    }


}

Service

@Service
public class DyhsService {

    @Autowired
    private DyhsDao dyhsDao;

    public void listEduCanBalance(Map map) {
        Map paramMap = Params.getParam(map); // 使用工具类获取参数;
        dyhsDao.callEduCanBalance(paramMap);
    }

}

Controller


@RestController
public class DyhsController {
    @Autowired
    private DyhsService dyhsService;
   
    @CrossOrigin
    @PostMapping("/listEduCanBal")
    // FIXME 这里要特别注意,结果是用参数 map 传递的, 自始至终 map 都在使用;
    // map 传递前端参数和传递传递执行的存储过程结果;
    public List<EduCanBalance> listEduCanBalance(@RequestBody Map map) {
        dyhsService.listEduCanBalance(map);
        List<EduCanBalance> eduCanBalance =  
        (List<EduCanBalance>) map.get("ResEduCanControl"); 
        // 获取@Select里面返回的最后一个参数ResEduCanControl;
        return eduCanBalance;
    }

}

类似的,更详细的内容见:使用xml的方式调用Oracle数据库存储过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值