Mybatis generator生成Service,Controller,添加批量新增数据接口(基于mybatis-generator-1.3.5源码修改)
好久记录笔记,这段时间做政府的项目,数据录入系统基本都是通过excel导入,且数据量大,许多也是单表的录入,这就有很多可以通用的代码,如controller,service层的那一套都是可以代码生成,添加了一个数据库批量添加接口(目前只支持oracle),
代码是基于mybatis-generator-1.3.5源码修改后的,具体的源码解析,后面等项目上线后,再好好整理一下,这里就粗鲁的记录如何使用。
mybatis-generator.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> <context id="DB2Tables" targetRuntime="MyBatis3"> <!--<plugin type="net.coderbee.mybatis.batch.BatchStatementHandler"></plugin> <plugin type="net.coderbee.mybatis.batch.BatchParameterHandler"></plugin>--> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接地址账号密码--> <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:test" userId="xxxx" password="xxxx" > <!--开启读取数据库注释:为了把注释写到相对应的注解里面--> <property name="remarksReporting" value="true"></property> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--生成Model类存放位置--> <javaModelGenerator targetPackage="com.shsoft.platform.domain" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <!--设置注解,%s占位符,读取数据库字段注释(多个注解用;分隔),一个占位符读取数据库字段注释,第二数据库字段排序--> <property name="annotation" value="@Excel(name = "%s", fixedIndex = %s);@ApiParam(value = "%s")"/> <!--设置注解需要的包路径,多个用,分隔--> <property name="annotationTargetPackage" value="cn.afterturn.easypoi.excel.annotation.Excel,io.swagger.annotations.ApiParam"/> </javaModelGenerator> <!--生成映射文件存放位置--> <sqlMapGenerator targetPackage="com.shsoft.platform.dao.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!--生成Dao类存放位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.shsoft.platform.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!--生成service,serviceImpl--> <javaServiceGenerator targetPackage="com.shsoft.platform.service" targetProject="src/main/java" implementationPackage="com.shsoft.platform.service"> </javaServiceGenerator> <!--生成controller--> <javaControllerGenerator targetPackage="com.shsoft.platform.ctrl" targetProject="src/main/java"> <property name="superClass" value="com.shsoft.platform.ctrl.BaseController"></property> </javaControllerGenerator> <!--生成对应表及类名,添加:enableInsertBatch(是否生成批量添加语句,目前只支持oracle),enableInsertBatchIgnore:批量添加语句中忽略的字段--> <table tableName="SYSTEM_NOTICE" domainObjectName="SystemNotice" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="false" enableInsertBatch="true" enableListParam="true"> <property name="enableInsertBatchIgnore" value="createDt"></property> </table> </context> </generatorConfiguration>
执行生成代码
最后生成 InsertBatch
生成service
生成controller:添加excel导入导出接口(基于easypoi导入导出)
package com.shsoft.platform.ctrl; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.github.pagehelper.PageInfo; import com.shsoft.common.enums.Error; import com.shsoft.framework.core.exception.ShsoftException; import com.shsoft.framework.core.id.UUIDFactory; import com.shsoft.framework.web.model.ErrorMessage; import com.shsoft.framework.web.model.JSONResult; import com.shsoft.platform.domain.FixedAssetsIndicator; import com.shsoft.platform.domain.ListFixedAssetsIndicatorParam; import com.shsoft.platform.service.ExcelService; import com.shsoft.platform.service.FixedAssetsIndicatorService; import com.shsoft.platform.utils.ShExcelImportParams; import com.shsoft.platform.utils.ShExcelImportUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.*; /* * @author lishun * @Description 能源投资统计科:分市固定资产投资主要指标 * @date 2018/9/27 * @param * @return */ @Slf4j @Controller @RequestMapping("/fixedAssetsIndicator") @Api(description = "能源投资统计科:分市固定资产投资主要指标") public class FixedAssetsIndicatorController extends BaseController { @Autowired private FixedAssetsIndicatorService fixedAssetsIndicatorService; @ApiOperation(value = "列表查询", httpMethod = "POST") @RequestMapping("/list.do") @ResponseBody public JSONResult list(@Validated ListFixedAssetsIndicatorParam param) throws ShsoftException { JSONResult result = new JSONResult(fixedAssetsIndicatorService.list(param)); return result; } @ApiOperation(value = "单条查询", httpMethod = "POST") @RequestMapping("/get.do") @ResponseBody public JSONResult get(String id) throws ShsoftException { JSONResult result = new JSONResult(fixedAssetsIndicatorService.get(id)); return result; } @ApiOperation(value = "删除", httpMethod = "POST") @RequestMapping("/delete.do") @ResponseBody public JSONResult delete(String id) throws ShsoftException { fixedAssetsIndicatorService.delete(id); return new JSONResult(); } @ApiOperation(value = "新增", httpMethod = "POST") @RequestMapping("/save.do") @ResponseBody public JSONResult save(@Validated FixedAssetsIndicator toDB) throws ShsoftException { toDB.setId(new UUIDFactory().generate().toString()); fixedAssetsIndicatorService.save(toDB); return new JSONResult(); } @ApiOperation(value = "修改", httpMethod = "POST") @RequestMapping("/update.do") @ResponseBody public JSONResult update(@Validated FixedAssetsIndicator toDB) throws ShsoftException { fixedAssetsIndicatorService.update(toDB); return new JSONResult(); } @ApiOperation(value = "导出", httpMethod = "POST") @RequestMapping("/export.do") @ResponseBody public JSONResult exportExcel(@Validated ListFixedAssetsIndicatorParam param, HttpServletRequest request, HttpServletResponse response) throws ShsoftException { JSONResult result = new JSONResult(); PageInfo<FixedAssetsIndicator> pageInfo = fixedAssetsIndicatorService.list(param); List<FixedAssetsIndicator> list = pageInfo.getList(); List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); if(list != null && list.size() > 0){ for (int i = 0; i < list.size(); i++) { Map<String, Object> lm = new HashMap<String, Object>(); if(list.get(i).getId() != null ){ lm.put("id", list.get(i).getId()); } if(list.get(i).getCreateDt() != null ){ lm.put("createDt", list.get(i).getCreateDt()); } if(list.get(i).getCountTime() != null ){ lm.put("countTime", list.get(i).getCountTime()); } if(list.get(i).getCity() != null ){ lm.put("city", list.get(i).getCity()); } if(list.get(i).getCityCode() != null ){ lm.put("cityCode", list.get(i).getCityCode()); } if(list.get(i).getFixedInvestmentTotal() != null ){ lm.put("fixedInvestmentTotal", list.get(i).getFixedInvestmentTotal()); } if(list.get(i).getFixedInvestmentSpeedUp() != null ){ lm.put("fixedInvestmentSpeedUp", list.get(i).getFixedInvestmentSpeedUp()); } if(list.get(i).getFolkInvestmentTotal() != null ){ lm.put("folkInvestmentTotal", list.get(i).getFolkInvestmentTotal()); } if(list.get(i).getFolkInvestmentSpeedUp() != null ){ lm.put("folkInvestmentSpeedUp", list.get(i).getFolkInvestmentSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getFolkInvestmentTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getFolkInvestmentTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_folkInvestmentTotal", String.format("%.1f",newVal)); } if(list.get(i).getRealtyInvestmentTotal() != null ){ lm.put("realtyInvestmentTotal", list.get(i).getRealtyInvestmentTotal()); } if(list.get(i).getRealtyInvestmentSpeedUp() != null ){ lm.put("realtyInvestmentSpeedUp", list.get(i).getRealtyInvestmentSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getRealtyInvestmentTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getRealtyInvestmentTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_realtyInvestmentTotal",String.format("%.1f",newVal)); } if(list.get(i).getEmploymentInvestmentTotal() != null ){ lm.put("employmentInvestmentTotal", list.get(i).getEmploymentInvestmentTotal()); } if(list.get(i).getEmploymentInvestmentSpeedUp() != null ){ lm.put("employmentInvestmentSpeedUp", list.get(i).getEmploymentInvestmentSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getEmploymentInvestmentTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getEmploymentInvestmentTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_employmentInvestmentTotal",String.format("%.1f",newVal)); } if(list.get(i).getTechnologyInvestmentTotal() != null ){ lm.put("technologyInvestmentTotal", list.get(i).getTechnologyInvestmentTotal()); } if(list.get(i).getTechnologyInvestmentSpeedUp() != null ){ lm.put("technologyInvestmentSpeedUp", list.get(i).getTechnologyInvestmentSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getTechnologyInvestmentTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getTechnologyInvestmentTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_technologyInvestmentTotal",String.format("%.1f",newVal)); } if(list.get(i).getInfrastructureTotal() != null ){ lm.put("infrastructureTotal", list.get(i).getInfrastructureTotal()); } if(list.get(i).getInfrastructureSpeedUp() != null ){ lm.put("infrastructureSpeedUp", list.get(i).getInfrastructureSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getInfrastructureTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getInfrastructureTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_infrastructureTotal",String.format("%.1f",newVal)); } if(list.get(i).getHighTechTotal() != null ){ lm.put("highTechTotal", list.get(i).getHighTechTotal()); } if(list.get(i).getHighTechSpeedUp() != null ){ lm.put("highTechSpeedUp", list.get(i).getHighTechSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getHighTechTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getHighTechTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_highTechTotal",String.format("%.1f",newVal)); } if(list.get(i).getManufacturingTotal() != null ){ lm.put("manufacturingTotal", list.get(i).getManufacturingTotal()); } if(list.get(i).getManufacturingSpeedUp() != null ){ lm.put("manufacturingSpeedUp", list.get(i).getManufacturingSpeedUp()); } if(list.get(i).getFixedInvestmentTotal() != null && list.get(i).getManufacturingTotal() != null && list.get(i).getFixedInvestmentTotal() != 0){ Double newVal = Double.valueOf(list.get(i).getManufacturingTotal()) * 100 / Double.valueOf(list.get(i).getFixedInvestmentTotal()); lm.put("fixedInvestmentTotal_manufacturingTotal",String.format("%.1f",newVal)); } listMap.add(lm); } } Calendar calendar = Calendar.getInstance(); calendar.setTime(param.getCountTime()); Map<String, Object> map = new HashMap<String, Object>(); map.put("maplist", listMap); map.put("year", calendar.get(Calendar.YEAR)); map.put("month", calendar.get(Calendar.MONTH + 1)); TemplateExportParams params = new TemplateExportParams("excel_temple/固定资产投资/分市固定资产投资主要指标.xls"); Workbook workbook = ExcelExportUtil.exportExcel(params, map); OutputStream os = null; try { response.setHeader("content-Type", "application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-disposition","attachment;filename=分市固定资产投资主要指标.xls"); os = response.getOutputStream(); workbook.write(os); os.flush(); } catch (Exception e) { e.printStackTrace(); } return result; } @ApiOperation(value = "导入", httpMethod = "POST") @RequestMapping("/import.do") @ResponseBody public JSONResult importExcel(HttpServletRequest request) throws ShsoftException { MultipartHttpServletRequest multipartHttpServletRequest = ((MultipartHttpServletRequest) request); MultipartFile file = multipartHttpServletRequest.getFile("file"); JSONResult result = new JSONResult(); ImportParams params = new ImportParams(); params.setTitleRows(3); params.setHeadRows(1); params.setStartRows(1); try { if(file.getSize() > 0){ List<FixedAssetsIndicator> dataList = new ShExcelImportUtils().importExcelByIs(file.getInputStream(), FixedAssetsIndicator.class, params, false).getList(); fixedAssetsIndicatorService.insertBatch(dataList); }else{ result = new JSONResult(new ErrorMessage(Error.DAMPE_FIELD_UNAUTH.getCode(),Error.DAMPE_FIELD_UNAUTH.getMessage())); } } catch (Exception e) { throw new ShsoftException(e.getMessage(),e); } return result; } }
若文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论!希望能互相学习。需要源码和jar包的留下邮箱