Spring_mybatis_Oracle集成

MyBatis_Generator_Eclipse 插件安装使用

下载安装

1、下载MyBatis_Generator_Eclipse_1.3.1
2、解压压缩文件,将features中的jar包复制到eclipse的features中,将plugins中的jar包复制到eclipse中plugins中
3、重启eclipse

生成代码

新建generatorConfig.xml文件
和pom.xml放在同一层

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >
    <!-- location的值为本地数据库驱动 -->
    <classPathEntry location="F:/oracle11g/ojdbc6.jar"
        />
    <context id="context1" >
        <!-- jdbc:oracle:thin:@Oracle服务的地址:开放的接口:服务名
             userId="用户名" password="密码" -->
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:Orcl"
            userId="root" password="root" />
            <!-- bean类的地址 -->
        <javaModelGenerator targetPackage="com.trade.bean" targetProject="trade/src/main/java"
            />
            <!-- mapper.xml的地址 -->
        <sqlMapGenerator targetPackage="sql.oracle.trade" targetProject="trade/src/main/resources"
            />
            <!-- mapper接口的地址 -->
        <javaClientGenerator targetPackage="com.trade.dao" targetProject="trade/src/main/java"
            type="XMLMAPPER" />
            <!-- 对应的表 -->
        <table schema="Student" tableName="TMP_CHENKAIXIN_20171031"></table>        
    </context>
</generatorConfiguration>

写好上述文件后,在目录中右键generatorConfig.xml文件出现下图
generator
选择”Generate MyBatis/iBATIS Artifact”

example类中方法简单介绍

package com.miracle.trade.bean;
import java.util.ArrayList;
import java.util.List;
public class TmpChenkaixin20171031Example {
    protected String orderByClause;
    protected boolean distinct;
    protected List<Criteria> oredCriteria;
    public TmpChenkaixin20171031Example() {
        oredCriteria = new ArrayList<Criteria>();
    }
    /**
     * 添加升序条件 String为"DESC""ESC"
     */
    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }
    public String getOrderByClause() {
        return orderByClause;
    }
    /**
     * 去重,false为去重,true为不去重
     */
    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }
    public boolean isDistinct() {
        return distinct;
    }
    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }
    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }
    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }
    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }
    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }
    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }
    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;
        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }
        public boolean isValid() {
            return criteria.size() > 0;
        }
        public List<Criterion> getAllCriteria() {
            return criteria;
        }
        public List<Criterion> getCriteria() {
            return criteria;
        }
        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }
        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }
        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }
        /**
         * andXXXNull,添加XXX为null
         */
        public Criteria andIdIsNull() {
            addCriterion("ID is null");
            return (Criteria) this;
        }
        /**
         * andXXXNotNull,添加XXX不为null
         */
        public Criteria andIdIsNotNull() {
            addCriterion("ID is not null");
            return (Criteria) this;
        }
        /**
         * 以下同类型的止留一个做例子
         */
        /**
         * andXXXEqualTo,where语句 判断XXX字段等于value
         * @param value:判断条件
         * @return 符合条件的对象
         */
        public Criteria andIdEqualTo(Integer value) {
            addCriterion("ID =", value, "id");
            return (Criteria) this;
        }
        /**
         * andIdGreater/lessThan 等于where</<=/>/>=
         */
        public Criteria andIdGreaterThan(Integer value) {
            addCriterion("ID >", value, "id");
            return (Criteria) this;
        }
        /**
         * where id in{select id ......}
         */
        public Criteria andIdIn(List<Integer> values) {
            addCriterion("ID in", values, "id");
            return (Criteria) this;
        }
        public Criteria andIdNotIn(List<Integer> values) {
            addCriterion("ID not in", values, "id");
            return (Criteria) this;
        }
        /**
         * where id between value1 and value2
         */
        public Criteria andIdBetween(Integer value1, Integer value2) {
            addCriterion("ID between", value1, value2, "id");
            return (Criteria) this;
        }
        /**
         * 后面的是对其他列进行以上操作,为了不占地方,所以删掉了
         */
           }
    }
    /**
     * This class was generated by MyBatis Generator.
     * This class corresponds to the database table B2B_TBTC.TMP_CHENKAIXIN_20171031
     *
     * @mbggenerated do_not_delete_during_merge Wed Nov 01 09:41:53 CST 2017
     */
    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }
    /**
     * 后面两个内部类始终没读懂,留着希望大大们给点解释
     * @mbggenerated Wed Nov 01 09:41:53 CST 2017
     */
    public static class Criterion {
        private String condition;
        private Object value;
        private Object secondValue;
        private boolean noValue;
        private boolean singleValue;
        private boolean betweenValue;
        private boolean listValue;
        private String typeHandler;
        public String getCondition() {
            return condition;
        }
        public Object getValue() {
            return value;
        }
        public Object getSecondValue() {
            return secondValue;
        }
        public boolean isNoValue() {
            return noValue;
        }
        public boolean isSingleValue() {
            return singleValue;
        }
        public boolean isBetweenValue() {
            return betweenValue;
        }
        public boolean isListValue() {
            return listValue;
        }
        public String getTypeHandler() {
            return typeHandler;
        }
        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }
        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }
        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }
        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }
        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}

mapper接口中的方法介绍

package com.miracle.trade.dao;

import com.miracle.trade.bean.TmpChenkaixin20171031;
import com.miracle.trade.bean.TmpChenkaixin20171031Example;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface TmpChenkaixin20171031Mapper {
    /**
     * 按条件计数,条件为example初始化时添加的条件
     */
    int countByExample(TmpChenkaixin20171031Example example);
    int deleteByExample(TmpChenkaixin20171031Example example);
    /**
     * 按主键删除
     */
    int deleteByPrimaryKey(Integer id);
    /**
     * 插入数据,返回值为ID
     */
    int insert(TmpChenkaixin20171031 record);

    /**
     * 如果某些值为null,则不插入那些null值对应的列
     * 也就是会过滤,
     * 这个方法很常用
     */
    int insertSelective(TmpChenkaixin20171031 record);

    /**
     * 按条件查询
     */
    List<TmpChenkaixin20171031> selectByExample(TmpChenkaixin20171031Example example);

    /**
     * 根据主键查询
     */
    TmpChenkaixin20171031 selectByPrimaryKey(Integer id);

    /**
     * 按条件更新传入值不为null的字段
     */
    int updateByExampleSelective(@Param("record") TmpChenkaixin20171031 record, @Param("example") TmpChenkaixin20171031Example example);

    /**
     * 根据条件更新
     */
    int updateByExample(@Param("record") TmpChenkaixin20171031 record, @Param("example") TmpChenkaixin20171031Example example);

    /**
     * 按主键更新传入值值不为null字段
     */
    int updateByPrimaryKeySelective(TmpChenkaixin20171031 record);

    /**
     * 按主键更新
     */
    int updateByPrimaryKey(TmpChenkaixin20171031 record);
}

分页的Mapper.xml及mapper接口

mapper.xml

<?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.trade.dao.TmpCKX20171031PagMapper" >
<!-- 对应bean文件 -->
  <resultMap id="BaseResultMap" type="com.rade.bean.TmpChenkaixin20171031" >
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Wed Nov 01 09:41:53 CST 2017.
    -->
    <id column="ID" property="id" jdbcType="DECIMAL" />
    <result column="NAME" property="name" jdbcType="VARCHAR" />
    <result column="AGE" property="age" jdbcType="DECIMAL" />
  </resultMap>
  <select id="selectByExample" resultMap="BaseResultMap" parameterType="java.util.Map">
    <!--这是分页的判断,如果分页则添加这据SQL-->
    <if test="pagination != null" >
      select * from ( select row_.*, rownum rownum_ from (
    </if>
    <!--这是普通的select语句-->
    select * from TMP_CHENKAIXIN_20171031 WHERE ID BETWEEN #{idStart} and #{idEnd}
    <!-- 如果分页则加上这句SQL -->
    <if test="pagination != null" >
      <![CDATA[ ) row_ ) where rownum_ > #{pageBegin,jdbcType=DECIMAL} and rownum_ <= #{pageEnd,jdbcType=DECIMAL} ]]>
    </if>

 </select>
</mapper>

分页mapper接口

package com.miracle.trade.dao;

import java.util.List;
import java.util.Map;

import com.miracle.trade.bean.TmpChenkaixin20171031;

public interface TmpCKX20171031PagMapper {
    List<TmpChenkaixin20171031> selectByExample(Map map);
}

使用Spring创建Service and controller

在pom.xml中配置Spring_mybatis集成的相关依赖。

Service接口

import java.util.Map;

public interface TmpChenkaixin20171031Svc {
    public Map getCKX(Integer begin,Integer end,Integer pageNum,Integer pageSize);
}

Service实现类


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.trade.bean.TmpChenkaixin20171031;
import com.trade.bean.TmpChenkaixin20171031Example;
import com.trade.dao.TmpCKX20171031PagMapper;
/**
 * 如果不分页应使用这个mapper注入
 */
import com.trade.dao.TmpChenkaixin20171031Mapper;
import com.wsserver.tem.controller.TmpChenkaixin20171031Controller;
import com.wsserver.tem.service.TmpChenkaixin20171031Svc;

@Service
public class TmpChenkaixin20171031SvcImpl implements TmpChenkaixin20171031Svc {

    private static Logger log = Logger.getLogger(TmpChenkaixin20171031Controller.class);
    /**
     * 使用Autowired注解注入Mapper
     */
    @Autowired
    private TmpCKX20171031PagMapper TCkxMapper;
    @Override
    public Map getCKX(Integer begin,Integer end,Integer pageNum,Integer pageSize) {
        if(begin>=end){
            log.error("begin必须小于end");
            throw new RuntimeException();
        }
        TmpChenkaixin20171031Example example = new TmpChenkaixin20171031Example();
        //WHERE ID BETWEEN #{BEGIN} AND #{END};
        example.createCriteria().andIdBetween(begin, end);

        Map<String,Object> parameter = new HashMap<>();
        /**
         * 这一段时为了分页做的参数传入
         */
        parameter.put("pagination", true);
        parameter.put("pageBegin",pageNum);
        parameter.put("pageEnd",pageSize+pageNum);
        parameter.put("idStart", begin);
        parameter.put("idEnd", end);

        log.error("pageBegin:"+pageNum);
        log.error("xml参数:"+parameter);

        List<TmpChenkaixin20171031> lists = TCkxMapper.selectByExample(parameter );
        /**
         * 不分页则用这个返回结果集
         *      List<TmpChenkaixin20171031> lists = TCkxMapper.selectByExample(example);
         */
        Map<String,Object> map = new HashMap<>();
        int total = (end - begin) + 1;

        map.put("rows", lists);
        map.put("total", total);
        return map;
    }

}

Controller

package com.miracle.wsserver.tem.controller;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.miracle.controller.BaseController;
import com.miracle.wsserver.tem.service.TmpChenkaixin20171031Svc;

@Controller
@RequestMapping("/temC")// "/temc"是js,ajax中的地址
public class TmpChenkaixin20171031Controller extends BaseController{
    @Autowired
    private TmpChenkaixin20171031Svc temCSvc;
    private int idStart = 0;
    private int idEnd = 0;
    private static Logger log = Logger.getLogger(TmpChenkaixin20171031Controller.class);

    @RequestMapping("/searchC") //"/searchC"也是填在ajax里的地址
    public void queryTmpC(HttpServletRequest request,HttpServletResponse response){

        String sIdStart = request.getParameter("idStart");
        String sIdEnd = request.getParameter("idEnd");
        String sPageNum = request.getParameter("pageNumber");
        String sPageSize = request.getParameter("pageSize");
        log.error("S起始id"+sIdStart);
        log.error("S结束id"+sIdEnd);
        log.error("S页码"+sPageNum);
        log.error("S表格大小"+sPageSize);

        if(sIdStart!=null && sIdEnd!=null){
            this.idStart = Integer.parseInt(sIdStart);
            this.idEnd = Integer.parseInt(sIdEnd);
        }

        int pageNum = Integer.parseInt(sPageNum);
        int pageSize = Integer.parseInt(sPageSize);
        log.error("起始id"+idStart);
        log.error("结束id"+idEnd);
        log.error("页码"+pageNum);
        log.error("表格大小"+pageSize);
        Map map = temCSvc.getCKX(this.idStart,this.idEnd,pageNum,pageSize);


        log.debug("结果集:"+map);
        log.error("到达controller");
        returnJson(response,map);
    }
}

前端jsp以及js页面

jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -->
<!DOCTYPE html>
<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>临时</title>
        <!-- start: CSS -->
        <link href="${pageContext.request.contextPath }/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
        <link href="${pageContext.request.contextPath }/css/bootstrap-table.css" rel="stylesheet">
        <link href="${pageContext.request.contextPath }/css/bootstrap-select.css" rel="stylesheet">
        <style type="text/css">
          .upimeiLogisticsInfo{margin-top: -48px;}
          .icon-ok {background-position: -286px 0;}
        </style>
        <!-- end: CSS -->
</head>
<body>
    <!-- 菜单导航 -->
       <ul class="breadcrumb">
            <li>
                <i class="icon-home"></i>
                <a href="#">查询</a> 
                <i class="icon-angle-right"></i>
            </li>
            <li><a href="#">接口日志查看</a></li>
            <li></li>
        </ul>
    <!-- start: Web -->
    <div class=" row-fluid sortable ui-sortable legend pl15">


                        <div class="clearfix">
                            <div class="control-group w400 fl" style="margin:0;">
                                <label for="idStart" class="control-label ftz14 w110 tr mt5 fl">ID起始:</label>
                                <input type="text" class="input" id="idStart" placeholder="ID起始">
                            </div>                          
                            <div class="control-group w410 fl">
                                <label for="idEnd" class="control-label ftz14 w110 tr mt5 fl">ID结束:</label>
                                <input type="text" class="input" id="idEnd" placeholder="ID结束">
                            </div>                          
                        </div>  

                        <div class="clearfix">
                            <div class="control-group w400 fl" style="margin:0;">
                                <input type="button" id="qryLog" class="btn btn-primary fl ml30" value="查询" onclick="selectAll()"/>
                            </div>
                        </div>

                        <!-- Datagrid Start -->
                        <div class="row-fluid sortable fl mt15">        
                            <div class="box span12"  style="border-left:0;border-right:0;border-bottom:0;">                             
                                <div class="box-content" style="margin:0;">
                                    <table class="table table-striped table-bordered bootstrap-datatable datatable " id="provLogList" data-pagination="true">
                                    </table>
                                </div>
                            </div> 
                        </div>

                        <!-- Datagrid End -->
                        <!-- Modal -->
                        <div class="modal hide fade" id="myModal" tabindex="-1" role="dialog">
                        <div class="modal-header"><button class="close" type="button" data-dismiss="modal">×</button>
                        <h3 id="myModalLabel">串码同步信息</h3>
                        </div>
                        <div class="modal-body">
                            <div class="row-fluid sortable fl mt15">        
                            <div class="box span12"  style="border-left:0;border-right:0;border-bottom:0;">                             
                                <div class="box-content" style="margin:0;">
                                    <table class="table table-striped table-bordered bootstrap-datatable datatable " id="imeiInfoLogList" data-pagination="true">
                                    </table>
                                </div>
                            </div> 
                        </div>
                        </div>
                        </div>


                        <div class="zhezhao hide" id="zhezhao"><s></s></div>
    </div>
    <!-- end: Web-->
    <!-- start: JavaScript -->
    <script src="${pageContext.request.contextPath }/js/jquery-1.9.1.min.js"></script>
    <script src="${pageContext.request.contextPath }/js/jquery.bootstrap.min.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap-table.min.js"></script>
    <script src="${pageContext.request.contextPath }/js/locales/bootstrap-table-zh-CN.min.js"></script>
    <!-- 中文日期选择Locales -->
    <script src="${pageContext.request.contextPath }/js/bootstrap-select.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap-paginator.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap-datetimepicker.js"></script>
    <script src="${pageContext.request.contextPath }/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>   
    <script src="${pageContext.request.contextPath }/js/utils/StringUtils.js"></script>
    <script src="${pageContext.request.contextPath }/js/utils/DateUtils.js"></script>
    <script src="${pageContext.request.contextPath }/pages/tem/js/temC.js"></script>
    <!-- end: JavaScript-->
    <script type="text/javascript">
            var rootPath='<%=request.getContextPath()%>';
    </script>    
</body>
</html>

js

$(function(){
     //初始化下拉列表
     //initProvInfList();
     //初始化下拉复选框样式
     $('.selectpicker').selectpicker();
     //初始化时间样式
     $('.form_date').datetimepicker({
            language: 'zh-CN',
            weekStart: 1,
            todayBtn: 1,
            autoclose: 1,
            todayHighlight: 1,
            startView: 2,
            minView: 2,
            forceParse: 0,
            format: "yyyy-mm-dd" /*控制显示格式*/
     });
     //初始化时间值
     initDatePick();
     //初始化表格
     initTable();
     //初始化内嵌表格(串码详情)
     initImeiTable();   
});

/*
 *   Datagrid查询参数
 *   
 */
function queryLogParams(params){
    var infCodes = $("#infCode").val();
    var infCode = '';
    if(infCodes == null){
        infCode = '99';
    }else{
        infCode = JSON.stringify(infCodes);
    }
    var mchtType = $("#mchtType").val();
    var syncFlags = $("#syncFlag").val();
    var syncFlag = '';
    if(syncFlags == null){
      syncFlag = '99';
    }else{
      syncFlag = JSON.stringify(syncFlags);
    }
    var itemInstCode = $.trim($("#itemInstCode").val());
    var itemSyncFlags = $("#itemSyncFlag").val();
    var itemSyncFlag = '';
    if(itemSyncFlags == null){
        itemSyncFlag = '99';
    }else{
        itemSyncFlag = JSON.stringify(itemSyncFlags);
    }
    var b2bKey = $.trim($("#b2bKey").val());
    var startDate = $("#logStartDate").val();
    var endDate = $("#logEndDate").val();
    var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
              pageSize: params.limit,       //页面大小
              pageNumber: params.offset,    //页码
              infCode:infCode,              //接口类型
              mchtType:mchtType,            //商家类型
              syncFlag:syncFlag,            //订单同步标志
              itemInstCode:itemInstCode,    //串码编号
              itemSyncFlag:itemSyncFlag,    //串码同步标志
              b2bKey:b2bKey,                //同步标志
              startDate:startDate,          //开始时间
              endDate:endDate               //结束时间
    };
    return temp;
};


/*
 *   根据条件查询接口日志
 *   
 */
function selectAll(){       
    //增加查询遮罩
    $('#zhezhao').removeClass('hide');

    //解决翻页问题,先销毁再重建
    $("#provLogList").bootstrapTable('destroy');
    initTable();

    var idStart = $.trim($("#idStart").val());
    var idEnd = $.trim($("#idEnd").val());
    $.ajax({
        url:rootPath+"/temC/searchC",
        data:{
            idStart:idStart,
            idEnd:idEnd,
            pageSize: 20,               //页面大小
            pageNumber: 0               //页码
        },
        type:"get",
        async : true,
        dataType: "json",
        success: function( data ) {
            $('#provLogList').bootstrapTable("load",data);
            $('#zhezhao').addClass('hide');
        },
        error: function( data ) {
             $.messager.alert(data);
             $('#zhezhao').addClass('hide');
        }       
    });
}

function initTable(){
    //初始化数据展示列表 
    $('#provLogList').bootstrapTable({
    method:"get",
    cache:false,
    url:rootPath+"/temC/searchC",
    dataType: "json",
    pagination: true,    //分页
    pageList: [10,20],
    pageSize: 20,
    pageNumber: 1,
    queryParams:queryLogParams,//查询参数
    showColumns: true,
    showRefresh: false,
    search: false, //显示搜索框
    sidePagination: "server", //服务端处理分页
    clickToSelect: false,
    smartDisplay:true,
    columns: [
                  {
                      title: '编号',
                      field: 'id',
                      align: 'center',
                      valign: 'middle',
                      sortable: false
                  }, 
                  {
                      title: '姓名',
                      field: 'name',
                      align: 'center',
                      valign: 'middle',
                      sortable: false

                  }, 
                  {
                      title: '年龄',
                      field: 'age',
                      align: 'center',
                      valign: 'middle',
                      sortable: false
                  }
     ]
    });
}


前端的东西不熟,所以止贴代码就没了。

猜你喜欢

转载自blog.csdn.net/qq_34332035/article/details/78461854