Echarts集成springboot+mybatis(二)
Echarts集成springboot+mybatis(二)
本篇文章主要用于记录自己新学的东西,为什么用springboot+mybatis呢,最近用的比较多,而且也很方便,搭建也很快,springboot也是目前比较火的框架,而本篇展示只是把数据从数据库获取返回给echarts展示的demo,并没有过多业务
话不多说,开始:一个启动类,mysql包,mybatis包什么的maven弄一下,直接上代码,很简单的
model
sorceResult
//存储饼状图属性到result返回给前端ajax接收
public class sorceResult {
public int Ksid;
public sorceResult(int ksid, int stuid, String kname, int value, String name) {
Ksid = ksid;
Stuid = stuid;
Kname = kname;
this.value = value;
this.name = name;
}
public int getKsid() {
return Ksid;
}
public void setKsid(int ksid) {
Ksid = ksid;
}
public int Stuid;
public String Kname;
public sorceResult(String kname) {
Kname = kname;
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
protected void finalize() throws Throwable {
super.finalize();
}
public int getStuid() {
return Stuid;
}
public void setStuid(int stuid) {
Stuid = stuid;
}
public String getKname() {
return Kname;
}
public void setKname(String kname) {
Kname = kname;
}
public int value;
public String name;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public sorceResult(int value, String name) {
this.value = value;
this.name = name;
}
@Override
public String toString() {
return "sorceResult{" +
"value=" + value +
", name='" + name + '\'' +
'}';
}
}
TotalAchie
public class TotalAchie {
private Integer Ksid;
private Integer Stuid;
private Integer xztfenshu;
private Integer zhgfenshu;
private Integer zongfenshu;
private String Kname;
private Integer xztbiaozhun;
private Integer zhgbiaozhun;
private Integer zongbiaozhun;
@Override
public String toString() {
return "zongcj{" +
"Ksid=" + Ksid +
", Stuid=" + Stuid +
", xztfenshu=" + xztfenshu +
", zhgfenshu=" + zhgfenshu +
", zongfenshu=" + zongfenshu +
", Kname='" + Kname + '\'' +
", xztbiaozhun=" + xztbiaozhun +
", zhgbiaozhun=" + zhgbiaozhun +
", zongbiaozhun=" + zongbiaozhun +
'}';
}
public Integer getZhgfenshu() {
return zhgfenshu;
}
public void setZhgfenshu(Integer zhgfenshu) {
this.zhgfenshu = zhgfenshu;
}
public String getKname() {
return Kname;
}
public void setKname(String kname) {
Kname = kname;
}
public Integer getXztbiaozhun() {
return xztbiaozhun;
}
public void setXztbiaozhun(Integer xztbiaozhun) {
this.xztbiaozhun = xztbiaozhun;
}
public Integer getZhgbiaozhun() {
return zhgbiaozhun;
}
public void setZhgbiaozhun(Integer zhgbiaozhun) {
this.zhgbiaozhun = zhgbiaozhun;
}
public Integer getZongbiaozhun() {
return zongbiaozhun;
}
public void setZongbiaozhun(Integer zongbiaozhun) {
this.zongbiaozhun = zongbiaozhun;
}
public Integer getKsid() {
return Ksid;
}
public void setKsid(Integer ksid) {
Ksid = ksid;
}
public Integer getStuid() {
return Stuid;
}
public void setStuid(Integer stuid) {
Stuid = stuid;
}
public Integer getXztfenshu() {
return xztfenshu;
}
public void setXztfenshu(Integer xztfenshu) {
this.xztfenshu = xztfenshu;
}
public Integer getZhegfenshu() {
return zhgfenshu;
}
public void setZhegfenshu(Integer zhegfenshu) {
this.zhgfenshu = zhegfenshu;
}
public Integer getZongfenshu() {
return zongfenshu;
}
public void setZongfenshu(Integer zongfenshu) {
this.zongfenshu = zongfenshu;
}
}
dao
@Mapper
public interface TotalAchieDao {
List<TotalAchie> selectfenshu(int Stuid);
}
mapper
<select id="selectfenshu" resultType="com.demo.model.TotalAchie">
SELECT * FROM zongcj WHERE Stuid = #{Stuid};
</select>
server
public interface TotalAchieService {
List<TotalAchie> selectfenshu(int Stuid);
}
serverimpl
@Service
public class TotalAchieServiceImpl implements TotalAchieService {
@Autowired
private TotalAchieDao totalAchieDao;
@Override
public List<TotalAchie> selectfenshu(int Stuid) {
return totalAchieDao.selectfenshu(Stuid);
}
}
controller
@Controller
public class TotalAchieEchartsController {
@Autowired
private TotalAchieService totalAchieService;
/**
* 柱形图
* @return
*/
@PostMapping("/histogram")
@ResponseBody
public List<sorceResult> getScore(Integer Stuid) {
List<TotalAchie> zs= totalAchieService.selectfenshu(Stuid);
List<sorceResult> results = new ArrayList<sorceResult>();
System.out.println(zs);
for (TotalAchie zong : zs) {
//封装到一个result
sorceResult result = new sorceResult(zong.getZongfenshu(),zong.getKname());
results.add(result);
}
return results;
}
}
后台就是获取个数据t,一个查询调出放进results,前端用ajax从url指定获取results集合
Histogram.js
(function (window) {
////////////////////////////柱状图
var init = function (Stuid) {
var myChart = echarts.init(document.getElementById('main'));
// 显示标题,图例和空的坐标轴
myChart.setOption({
title: {
text: '异步数据加载示例'
},
tooltip: {},
legend: {
data: ['成绩']
},
xAxis: {
data: [],
axisLabel: {
interval:0,
// rotate:45, //代表逆时针旋转45度
}
},
yAxis: {},
series: [{
name: '成绩',
type: 'bar',
data: []
}]
});
myChart.showLoading(); //数据加载完之前先显示一段简单的loading动画
var names = []; //类别数组(实际用来盛放X轴坐标值)
var nums = []; //销量数组(实际用来盛放Y坐标值)
$.ajax({
type: "post",
async: true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
url: "/histogram", //请求发送到TestServlet处
data: {
Stuid:Stuid
},
dataType: "json", //返回数据形式为json
success: function (results) {
//请求成功时执行该函数内容,result即为服务器返回的json对象
if (results!=null) {
for (var i = 0; i < results.length; i++) {
names.push(results[i].name); //挨个取出类别并填入类别数组
}
for (var i = 0; i < results.length; i++) {
nums.push(results[i].value); //挨个取出销量并填入销量数组
}
myChart.hideLoading(); //隐藏加载动画
myChart.setOption({ //加载数据图表
xAxis: {
data: names
},
series: [{
// 根据名字对应到相应的系列
name: '成绩',
data: nums
}]
});
}
},
error: function (errorMsg) {
//请求失败时执行该函数
alert("图表请求数据失败!");
myChart.hideLoading();
}
})
};
window.init = init;
}(window));
说白了就是从后台获取,通过ajax传出,把值放到echarts的data里面。
一个Echarts+springboot+mybatis的demo就完成啦