java ssm饼图_SSM框架下的图表设计

本文介绍了在SSM(Spring、SpringMVC、MyBatis)框架下如何自定义Mapper来实现饼图数据的统计。通过创建GenMapper.xml和GenMapper.java,然后在Dao、Service和Controller层进行相应的操作,最终将数据以JSON格式返回给前端展示。示例代码展示了如何统计管理员的男女比例,并使用Echarts在jsp页面上显示饼图。
摘要由CSDN通过智能技术生成

1. 由于在自动生成的Mapper.xml文件里使用自定义结果集(即统计函数只取了其中的几个字段,但是其他的字段在转为json数据后还是会有字段,只是值为null,但对数据的选取造成难度。)效果不理想。

所以自己定义一个Mapper.xml文件和Mapper.java文件,如下:

GenMapper.xml:

${_parameter}

GenMapper.java:

import java.util.List;

import java.util.Map;

import org.springframework.stereotype.Component;

@Component

public interface GenMapper {

List> select(String sql);

}

2. 然后呢,设计Dao接口和Dao的实现类,在Daoimp中写sql语句,当然还可以封装sql语句。

DaoI.java:

public interface AdminuserDao {

//饼图查询

List> select();

}

在实现类中,还需要自动装配GenMapper -- DaoImp.java:

package dz.dao;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Repository;

import dz.daoI.AdminuserDao;

import dz.entity.Adminuser;

import dz.entity.User;

import dz.mapper.AdminuserMapper;

import dz.mapper.GenMapper;

@Repository("adminuserDao")

public class AdminuserDaoImp implements AdminuserDao{

@Autowired

private AdminuserMapper adminuserMapper;

@Autowired

private GenMapper genMapper;

public GenMapper getGenMapper() {

return genMapper;

}

public void setGenMapper(GenMapper genMapper) {

this.genMapper = genMapper;

}

public AdminuserMapper getAdminuserMapper() {

return adminuserMapper;

}

public void setAdminuserMapper(AdminuserMapper adminuserMapper) {

this.adminuserMapper = adminuserMapper;

}

//饼图查询

@Override

public List> select() {

// TODO Auto-generated method stub

String sql = "SELECT COUNT(asex) AS value,asex as name FROM adminuser GROUP BY asex";

return genMapper.select(sql);

}

}

3. 接着就是serviceI和serviceImp层(很简单的一层):

ServiceI.java:

public interface AdminuserService {

//饼图查询

List> select();

}

ServiceImp.java:

@Service("adminuserService")

public class AdminuserServiceImp implements AdminuserService{

@Autowired

private AdminuserDaoImp adminuserDao;

public AdminuserDaoImp getAdminuserDao() {

return adminuserDao;

}

public void setAdminuserDao(AdminuserDaoImp adminuserDao) {

this.adminuserDao = adminuserDao;

}

//饼图查询

@Override

public List> select() {

// TODO Auto-generated method stub

return adminuserDao.select();

}

}

4.最后是Controller层,将数据以json格式传给jsp页面:

@RestController

@RequestMapping(value="/adminuser")

public class AdminuserController extends BaseController{

@Autowired

private AdminuserService adminuserService;

public AdminuserService getAdminuserService() {

return adminuserService;

}

public void setAdminuserService(AdminuserService adminuserService) {

this.adminuserService = adminuserService;

}

//饼图查询男女人数

@RequestMapping(value="/pie")

@ResponseBody

public List> select(){

return adminuserService.select();

}

}

5. 最后jsp页面用ajax得到数据就可以制作图表了:

$(function(){

$.ajax({

url:"adminuser/pie",

type:"post",

data:{},

dataType:"json",

success:function(datas){

//var value = new Array();

//var name = new Array();

//$(objs).each(function(i,obj){

//name.push(obj[0]);

//value.push(obj[1]);

//});

console.log(datas);

var dom = document.getElementById("container");

var myChart = echarts.init(dom);

var app = {};

option = null;

option = {

backgroundColor: '#fff',

title: {

text: '管理员男女比例饼图',

left: 'center',

top: 20,

textStyle: {

color: 'green'

}

},

tooltip : {

trigger: 'item',

formatter: "{a}
{b} : {c} ({d}%)"

},

visualMap: {

show: false,

min: 80,

max: 600,

inRange: {

colorLightness: [0, 1]

}

},

series : [

{

name:'管理员',

type:'pie',

radius : '55%',

center: ['50%', '50%'],

data://[

//{value:335, name:'直接访问'},

//{value:310, name:'邮件营销'},

//{value:274, name:'联盟广告'},

//{value:235, name:'视频广告'},

//{value:400, name:'搜索引擎'}

//]

datas.sort(function (a, b) { return a.value - b.value; }),

roseType: 'radius',

label: {

normal: {

textStyle: {

color: 'red'

}

}

},

labelLine: {

normal: {

lineStyle: {

color: 'blue'

},

smooth: 0.2,

length: 10,

length2: 20

}

},

itemStyle: {

normal: {

color: '#c23531',

shadowBlur: 200,

shadowColor: 'rgba(65, 142, 172, 0.5)'

}

},

animationType: 'scale',

animationEasing: 'elasticOut',

animationDelay: function (idx) {

return Math.random() * 200;

}

}

]

};;

if (option && typeof option === "object") {

myChart.setOption(option, true);

}

}

});

});

PS:当然,肯定要引用js,我用的是:http://echarts.baidu.com/里面下载的echarts.js。

放张效果图(比较简陋,复杂的肯定需要复杂的sql,哈哈):

7f381c16bbd6204da28f503389ee640b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值