• Mybatis-generator生成Service和Controller


      好久记录笔记,这段时间做政府的项目,数据录入系统基本都是通过excel导入,且数据量大,许多也是单表的录入,这就有很多可以通用的代码,如controller,service层的那一套都是可以代码生成,添加了一个数据库批量添加接口(目前只支持oracle),代码是基于mybatis-generator-1.3.5源码修改后的,具体的源码解析,后面等项目上线后,再好好整理一下,这里就粗鲁的记录如何使用。

    1: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 = &quot;%s&quot;, fixedIndex = %s);@ApiParam(value = &quot;%s&quot;)"/>
                <!--设置注解需要的包路径,多个用,分隔-->
                <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>

    2:执行生成代码

     2-1:最后生成 InsertBatch

    <insert id="insertBatch" parameterType="java.util.List">
        insert into FIXED_ASSETS_INDICATOR (ID, ORDER_MARK, COUNT_TIME, 
          CITY, CITY_CODE, FIXED_INVESTMENT_TOTAL, 
          FIXED_INVESTMENT_SPEED_UP, FOLK_INVESTMENT_TOTAL, 
          FOLK_INVESTMENT_SPEED_UP, REALTY_INVESTMENT_TOTAL, 
          REALTY_INVESTMENT_SPEED_UP, EMPLOYMENT_INVESTMENT_TOTAL, 
          EMPLOYMENT_INVESTMENT_SPEED_UP, TECHNOLOGY_INVESTMENT_TOTAL, 
          TECHNOLOGY_INVESTMENT_SPEED_UP, INFRASTRUCTURE_TOTAL, 
          INFRASTRUCTURE_SPEED_UP, HIGH_TECH_TOTAL, 
          HIGH_TECH_SPEED_UP, MANUFACTURING_TOTAL, 
          MANUFACTURING_SPEED_UP)
        <foreach close=")" collection="list" item="item" open="(" separator="UNION">
          SELECT #{item.id,jdbcType=VARCHAR}, #{item.orderMark,jdbcType=DECIMAL}, #{item.countTime,jdbcType=TIMESTAMP}, 
            #{item.city,jdbcType=VARCHAR}, #{item.cityCode,jdbcType=VARCHAR}, #{item.fixedInvestmentTotal,jdbcType=DECIMAL}, 
            #{item.fixedInvestmentSpeedUp,jdbcType=FLOAT}, #{item.folkInvestmentTotal,jdbcType=DECIMAL}, 
            #{item.folkInvestmentSpeedUp,jdbcType=FLOAT}, #{item.realtyInvestmentTotal,jdbcType=DECIMAL}, 
            #{item.realtyInvestmentSpeedUp,jdbcType=FLOAT}, #{item.employmentInvestmentTotal,jdbcType=DECIMAL}, 
            #{item.employmentInvestmentSpeedUp,jdbcType=FLOAT}, #{item.technologyInvestmentTotal,jdbcType=DECIMAL}, 
            #{item.technologyInvestmentSpeedUp,jdbcType=FLOAT}, #{item.infrastructureTotal,jdbcType=DECIMAL}, 
            #{item.infrastructureSpeedUp,jdbcType=FLOAT}, #{item.highTechTotal,jdbcType=DECIMAL}, 
            #{item.highTechSpeedUp,jdbcType=FLOAT}, #{item.manufacturingTotal,jdbcType=DECIMAL}, 
            #{item.manufacturingSpeedUp,jdbcType=FLOAT} FROM DUAL
        </foreach>
      </insert>

     2-2:生成service

    public class FixedAssetsIndicatorServiceImpl implements FixedAssetsIndicatorService {
        @Autowired
        private FixedAssetsIndicatorMapper fixedAssetsIndicatorMapper;
    
        public int insertBatch(List<FixedAssetsIndicator> list) {
            if(list != null && list.size() > 0 ){
                FixedAssetsIndicatorExample fixedAssetsIndicatorExample = new FixedAssetsIndicatorExample();
                fixedAssetsIndicatorExample.createCriteria().andCountTimeEqualTo(list.get(0).getCountTime());
                fixedAssetsIndicatorMapper.deleteByExample(fixedAssetsIndicatorExample);
                return fixedAssetsIndicatorMapper.insertBatch(list);
            }
            return 0;
        }
        public PageInfo<FixedAssetsIndicator> list(ListFixedAssetsIndicatorParam param) {
            FixedAssetsIndicatorExample example = new FixedAssetsIndicatorExample();
            if(param.getCountTime() != null){
                example.createCriteria().andCountTimeEqualTo(param.getCountTime());
            }
            PageHelper.startPage(param.getPageNum(), param.getPageSize());
            example.setOrderByClause("ORDER_MARK");
            List<FixedAssetsIndicator> fromDB = fixedAssetsIndicatorMapper.selectByExample(example);
            PageInfo pageInfo = new PageInfo(fromDB);
            return pageInfo;
        }
    
        public FixedAssetsIndicator get(String id) {
            return fixedAssetsIndicatorMapper.selectByPrimaryKey(id);
        }
    
        public void save(FixedAssetsIndicator toDB) {
            fixedAssetsIndicatorMapper.insertSelective(toDB);
        }
    
        public void delete(String id) {
            fixedAssetsIndicatorMapper.deleteByPrimaryKey(id);
        }
    
        public void update(FixedAssetsIndicator toDB) {
            fixedAssetsIndicatorMapper.updateByPrimaryKeySelective(toDB);
        }
    }

     2-3:生成controller:添加excel导入导出接口(基于easypoi导入导出)

    @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).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());
                    }
                    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包的留下邮箱

    转载于:https://www.cnblogs.com/lishun1005/p/10057129.html

  • 相关阅读:
    快速幂模板
    部分有关素数的题
    POJ 3624 Charm Bracelet (01背包)
    51Nod 1085 背包问题 (01背包)
    POJ 1789 Truck History (Kruskal 最小生成树)
    HDU 1996 汉诺塔VI
    HDU 2511 汉诺塔X
    HDU 2175 汉诺塔IX (递推)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
  • 原文地址:https://www.cnblogs.com/twodog/p/12135511.html
Copyright © 2020-2023  润新知