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