因为要查询表的数据,表的名称是从另一个表中取出的,查询哪个表不一定,所以想到了不写实体类查询。
为了防止字段内容为null时,字段不出现,在application.yml中加
mybatis-plus:
	configuration:
    	call-setters-on-nulls: true  #resultType的类型为java.util.map。发现字段为null时,让其仍有该字段。

接口

import java.util.HashMap;
import java.util.List;
@DS("db2")
public interface TableMapper {
    List<HashMap<String,Object>> queryTableDetails(String tableName,String billno);
}

TableMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.quartz.mapper.TableMapper">

    <select id="queryTableDetails" resultType="HashMap" statementType="STATEMENT">
        select * from ${tableName} t where t.billno = '${billno}';

    </select>
</mapper>

service : TableService


import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@Service
public class TableServiceImpl implements TableService {
    @Resource
    private TableMapper tableMapper;
    @Override
    public List<HashMap<String, Object>> queryTableDetails(String tableName,String billno) {
        return tableMapper.queryTableDetails(tableName,billno);
    }
}

TableServiceImpl

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@Service
public class TableServiceImpl implements TableService {
    @Resource
    private TableMapper tableMapper;
    @Override
    public List<HashMap<String, Object>> queryTableDetails(String tableName,String billno) {
        return tableMapper.queryTableDetails(tableName,billno);
    }
}

Controller


@RestController
public class TableController {
    @Autowired
    TableService tableService;

    @GetMapping("/getTableDetails")
    public List<HashMap<String,Object>> list(){
        List<HashMap<String, Object>> hashMaps = tableService.queryTableDetails("Exp_NorMain", "NORT202012030306");
        return hashMaps;
    }

}

结果 :查询成功!
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐