1.相关配置:

  • 配置appication.xml文件   该文件中主要配置数据库连接、mybatis、server、log相关信息,配置如下:

spring:

  datasource:

IP地址+端口号/reportforms?useAffectedRows=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
     username: username
     password : password
     driverClassName : com.mysql.jdbc.Driver       mybatis:
 mapperLocations :
  classpath:mapper/*.xml   ##配置mapper映射的路径,用户定义接口获取数据库查询后的数据
 server:
 port: 8060
 servlet:
 context-path: /reportforms##log日志配置
logging:
  file: logs/application_log.log
 level:
  ROOT: INFO
  org.springframework.boot: INFO
 org.springframework.web: INFO
 pattern:
  console: "%d - %msg%n"

2.src/main/resources 数据源的获取

  • 该处是通过配置数据库字段(查看数据库对应字段)和属性(model层使用)
<?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.changan.reportFormsMysql.mapper.basic.IAMapper"><resultMap id="AR"
         type="com.changan.reportFormsMysql.model.AModel">
         <result column="字段1" jdbcType="VARCHAR" property="属性名1" />
         <result column="字段2" jdbcType="VARCHAR" property="属性名2" />
         <result column="字段3" jdbcType="VARCHAR" property="属性名3" />
         <result column="字段4" jdbcType="VARCHAR" property="属性名4" />
         <result column="字段5" jdbcType="VARCHAR" property="属性名5" />
         <result column="字段6" jdbcType="VARCHAR" property="属性名6" />
         <result column="字段7" jdbcType="VARCHAR" property="属性名7" />
         <result column="字段8" jdbcType="VARCHAR" property="属性名8" />  
     </resultMap><!--  下面的id相当于函数,其他地方会使用是个函数,resultMap是通过上面的配置进行拉取  -->
<select id="getARatio" resultMap="AR">
     SELECT
     *
     FROM
     active_ratio
     WHERE
     series_code=#{参数}
     ORDER BY
     yearmonth
     DESC
 </select></mapper>
  • @Mapper 这块是属于mybatis机制中内容,定义数据接口,注明这个是一个mapper映射,这里就是通过书写接口以及注解@Mapper进行使用。
@Mapper
public interface IAMapper {
   //红色参数要与数据库配置的mapper内容一致
参数") String carSeries);        
 }

3.Model层数据

该处主要是将数据库配置中的.xml文件property进行映射,得到set和get方法,后续在用户进行访问时进行调用,同样可以使用lombok进行配置。

public class AModel {
        private String seriesCode;
         private String yearmonth;
         private String activecount;
         private String activesum;
         private String salecount;
         private String salesum;
         private String activeratio;
         private String updateTime;
         
         public String getSeriesCode() {
             //System.out.println("------------调用model中的getSeries()函数----------");
             logger.error("------------调用model中的getSeries()函数----------");
             return seriesCode;
         }
         Logger logger = LoggerFactory.getLogger(ReportFormsController.class);
         public void setSeriesCode(String seriesCode) {            //System.out.println("------------调用model中的setSeries()函数----------");
             logger.error("------------调用model中的setSeries()函数----------");
             
             
             this.seriesCode = seriesCode;
         }
         public String getYearmonth() {
             return yearmonth;
         }
         public void setYearmonth(String yearmonth) {
             this.yearmonth = yearmonth;
         }        ·
           ·
            ·     
 }

4.Service层

主要是进行业务数据处理,一些算法可以在该层实现,并为Controller提供服务。

分为一个接口和实现类

public interface IA {
        public Msg getARatio(String carSeries) throws Exception;
}

实现中药标注@Service,代表是Service层

@Service
 public class A implements IA {
     //该处通过自动注入mapper,将数据拉取过来,@Autowired主要是新建一个mapper对象,方便调用数据。
     @Autowired
     IAMapper mapper;
     
     @Override
     public Msg getARatio(String carSeries) {
         
         
         String valueSum;
         Msg msg = new Msg();
         ArrayList<AModel> res;
         try {
             Logger logger = LoggerFactory.getLogger(ReportFormsController.class);
             logger.error("----------------函数进入service-----------------");
             res = mapper.getARatio(carSeries);
             for (int i = 0; i < res.size(); i++) {
                 
                 valueSum = res.get(i).getActivecount() + res.get(i).getActivesum();
                 logger.error("---------" + valueSum + "------------");
             }
             if (res.size() > 0) {
                 msg.setCode(0);
                 msg.setData(res);
             } else {
                 msg.setCode(0);
                 msg.setData(null);
             }
             
         } catch (Exception e) {
             e.printStackTrace();
             msg.setCode(1);
             msg.setMsg(ResponseCode.ERROR.getDesc());
         }
         
         return msg;
     }
 }

5.Controller层

采用@Contoller注解的方式,可以使接口的定义更加简单,将@Controller标记在某个类上,配合@RequestMapping注解,可以在一个类中定义多个接口,这样使用起来更加灵活。被@Controller标记的类实际上就是个SpringMVC Controller对象,它是一个控制器类,而@Contoller注解在org.springframework.stereotype包下。其中被@RequestMapping标记的方法会被分发处理器扫描识别,将不同的请求分发到对应的接口上。ReportFormsController 即为一个自定类。在该类的前面标记@Controller,该类就成了一个控制器类。

@Controller
 @RequestMapping("/report")
 public class ReportFormsController {/************************************************************
       * Author:T.song
       * Function: getARatio()接收用户输入参数
       ************************************************************/
      @Autowired
      IA iaservice;
     
      @PostMapping(value="/getA")
      @ResponseBody
      public Msg getARatio(@RequestParam(required=false) String carSeries){
           
          Logger logger = LoggerFactory.getLogger(ReportFormsController.class);
          logger.error("----------------函数进入controller-----------------");
             if (carSeries == null) {
                 
                 msg.setCode(0);
                 msg.setMsg(ResponseCode.ILLEGAL_ARGUMENT.getDesc());
                 logger.error(ResponseCode.ILLEGAL_ARGUMENT.getDesc());
                 return msg;
                 
             };
             
               try {
                   
                 return iaservice.getARatio(carSeries);
             } catch (Exception e) {
                 
                 e.printStackTrace();
                 logger.error(e.getMessage());
                 msg.setCode(0);
                 msg.setMsg(ResponseCode.ERROR.getDesc());
             }
               
             return msg;
           
       }}

注意:上述内容由个人及其相关项目内容简化撰写,如有错误地方或表述不清楚地方请见谅,并希望您能帮忙指出。