栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一个普通的数据接口(mybatis)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一个普通的数据接口(mybatis)

工作需要读取kafka的数据量写到mysql,之后再写个接口对接前端,就需要把数据返回给前端,不是很会写,纯靠百度战士。

直接上代码

 以上都是这个接口的类,一个个来吧

常量说明

public class Constants {
    public  static String  CODE_OK="200";
    public  static String  MSG_OK="成功";

    public  static String  CODE_EXCEPTION="400";
    public  static String  CODE_ERROR="500";
}
swagger 插件配置
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
// 写自己的包名
                .apis(RequestHandlerSelectors.basePackage("com.xxxx.backdemo.controller"))
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
// 具体要干啥事 都可以写上去
                .title("xxx")
                .description("xxx")
                .version("1.0")
                .build();
    }

}

实体类,返回数据用

@ApiModel(description = "查询门架系统数据")
@Data
public class MjxtBean {
    // 给值,如果没有 就给个默认值,根据需求来的
    @ApiModelProperty(value = "xxxx",name = "company_name",required = true,example = "xxx")
    private String company_name;

    // 具体根据需要来添加实体类,不在一一展示

}

数据封装实体类 setget方法加个@Data注解就可以了

@Data
@ApiModel(description = "返回结果")
public class DataResult {

    @ApiModelProperty(value = "编码", required = true, example = "200")
    public String code;

    @ApiModelProperty(value = "返回信息", required = true, example = "成功")
    public String msg;

    @ApiModelProperty(value = "异常信息", required = true, example = "null")
    public String exception;

    @ApiModelProperty(value = "数据详情", required = true, example = "{"total":0,"rows":[{},{}]}")
    public Object data;

}

service层

@Service
public interface IMjxtService {
    void mjxtQuery(DataResult dataResult, String tableName);
    void mjxtQuerys(DataResult dataResult, MjxtBean mjxtBean);

}

impl实现类

@Service
public class MjxtServiceImpl implements IMjxtService {

    private static Logger logger = LoggerFactory.getLogger(MjxtServiceImpl.class);

    @Resource
    private MjxtQueryMapper mjxtQueryMapper;

    @Override
    public void mjxtQuery(DataResult dataResult, String tableName) {
        List> data = ConvertMapKeyToLower.convertList(mjxtQueryMapper.selectMjxt(tableName));
        HashMap m = new HashMap<>();
        m.put("total",data.size());
        m.put("rows",data);
        dataResult.setData(m);
    }

    @Override
    public void mjxtQuerys(DataResult dataResult, MjxtBean mjxtBean) {
        // 查询多个参数
        if (mjxtBean.getStatistical_type().contains("1")){
            mjxtBean.setStatistical_type("根据需求类型需要查不同的表");
            mjxtBean.setStatistics("小时");
        }else if (mjxtBean.getStatistical_type().contains("2")){
            mjxtBean.setStatistical_type("t_hive_day_count_detail");
            mjxtBean.setStatistics("天");
        }else if (mjxtBean.getStatistical_type().contains("3")){
            mjxtBean.setStatistical_type("t_hive_month_count_detail");
            mjxtBean.setStatistics("月");
        }
        List> data = ConvertMapKeyToLower.convertList(mjxtQueryMapper.selectMjxts(mjxtBean));
        HashMap m = new HashMap<>();
        m.put("total",data.size());
        m.put("rows",data);
        dataResult.setData(m);
    }
}

controller层 根据需求改动,单参数,或者对象参数

@Api(tags = "门架系统接口")
@RestController
@RequestMapping(value = "/back/mjxt")
public class MjxtController {
    private static Logger logger = LoggerFactory.getLogger(MjxtController.class);

    @Resource
    private MjxtServiceImpl mjxtService;

    @ApiOperation(value = "单参数查询门架系统", notes = "采用mjxtQuery查询表")
    @GetMapping(value = "/mjxtQuery")
    public DataResult mjxtQuery(  @ApiParam(value = "tablename", required = true,defaultValue = "t_kafka_hour_count") @RequestParam String tableName) {
        DataResult dataResult = new DataResult();
        try {
            dataResult.setCode(Constants.CODE_OK);
            dataResult.setMsg(Constants.MSG_OK);

            mjxtService.mjxtQuery(dataResult,tableName);
        } catch (Exception e) {

            logger.error("xxx", e);
            dataResult.setCode(Constants.CODE_EXCEPTION);
            dataResult.setMsg(e.toString());
        } finally {
            return dataResult;
        }
    }

    @ApiOperation(value = "多参数查询门架系统",notes = "采用mjxtQuerys查询表")
//    @GetMapping(value = "/mjxtQuerys")
    @PostMapping(value = "mjxtQuerys")
    public DataResult mjxtQuerys(@RequestBody MjxtBean mjxtBean){
        DataResult dataResult = new DataResult();
        try {
            dataResult.setCode(Constants.CODE_OK);
            dataResult.setMsg(Constants.MSG_OK);
            mjxtService.mjxtQuerys(dataResult,mjxtBean);
        } catch (Exception e) {
            logger.error("xxx", e);
            dataResult.setCode(Constants.CODE_EXCEPTION);
            dataResult.setMsg(e.toString());
        } finally {
            return dataResult;
        }
    }
}

mapper层,对应mybatis的配置

@Mapper
public interface MjxtQueryMapper {
    
    List> selectMjxt(@Param("tableName") String tableName);

    
    List> selectMjxts(@Param("MjxtBean") MjxtBean mjxtBean);

}

剩下的就是配置了

mybatis的xml配置


                // 写mapper的具体类名
    
        select
        t2.company_name,
        t2.gantry_name,
        t1.gantry_id,
        t1.count,
        t1.data_type,
        t1.date_time,
        #{MjxtBean.statistics} as 'statistics'
        from
        (select *
        from
            ${MjxtBean.statistical_type}
        
        
            and gantry_id = #{MjxtBean.gantry_id}
        
        
            and data_type = #{MjxtBean.data_type}
        
        
            and date_time  #{MjxtBean.end_time}
        
        
            and date_time >= #{MjxtBean.start_time}
        
        
            ) as t1
        left join
            t_base_mjxt as t2
        on
            t1.gantry_id = t2.gantry_id
        
        
            and t2.company_name like concat ('%',#{MjxtBean.company_name},'%')
        
        
            and t2.gantry_name like concat ('%',#{MjxtBean.gantry_name},'%')
        
        
            and t1.data_type = #{MjxtBean.data_type}
        
        

    

然后这个sql语句,如果是对象传参就是对象.参数,然后都是#符号,表名是$符号,如果参数是中文的 推荐用like模糊查询,concat('%',#{对象.参数},'%')

application.properties

server.port=18312

spring.datasource.url=jdbc:mysql://数据库:3306/jgkj?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=密码
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.maxIdleTime=1800
spring.datasource.connectionTestQuery=select 1
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
// mapper实体类所在的包
mybatis.type-aliases-package=com.xxx.xxx.xxx
// 扫描包下面所有的xml文件
mybatis.mapper-locations = classpath:mapper/*.xml

logging.config=classpath:logback.xml

大概就是这样

返回的结果,大概就是这样吧。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006290.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号