电商项目开发5----代码生成器(2)

继续写 controller.vm

package com.rb.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageInfo;
#if(${modelName} == 'menu')
import com.rb.model.Menu;
import com.rb.service.MenuService;
#else
import com.rb.model.Menu;
import com.rb.service.MenuService;
import com.rb.model.${modelClass};
import com.rb.service.${modelClass}Service;
#end


@RequestMapping("/${modelName}")
@Controller
public class ${modelClass}Controller {

#if(${modelName} == 'menu')
    @Autowired
    private ${modelClass}Service ${modelName}Service;
#else
     @Autowired
    private ${modelClass}Service ${modelName}Service;
    @Autowired
	private MenuService menuService;
#end
	
	
	@ResponseBody
	@RequestMapping("/delete.do")
	public boolean delete(Integer id){
		try{
		    ${modelName}Service.delete(id);
		}catch(Exception e){
			System.out.println(e.getMessage());
			
			return false;
		}
		return true;
		
	}
	
	@ResponseBody
	@RequestMapping("/create.do")
	public boolean create(${modelClass} ${modelName}){
		try{
		    ${modelName}Service.create(${modelName});
		}catch(Exception e){
			System.out.println(e.getMessage());
			
			return false;
		}
		return true;
		
	}
	
	@ResponseBody
	@RequestMapping("/findById.do")
	public ${modelClass} findById(Integer id){
		return ${modelName}Service.findById(id);
	
	}
	
	@ResponseBody

	@RequestMapping("/list.do")
	public String list(${modelClass} ${modelName},Model model,
			@RequestParam(required=true,value="pageNum",defaultValue="1")Integer pageNum,
			@RequestParam(required=true,value="pageSize",defaultValue="3")Integer pageSize
			){
		
		PageInfo<${modelClass}> ${modelName}s = ${modelName}Service.list(pageNum, pageSize, ${modelName});
		
		model.addAttribute("pageInfo",${modelName}s);
		return "${modelName}";
		
	}
	
	
}

 在CodeBuilder加入以下代码  运行

 //controller
        Template controllerVm = ve.getTemplate("/WebContent/WEB-INF/vm/controller.vm");
        merge(controllerVm,ctx,rootPath + "/src/com/rb/controller/" + modelClass + "Controller.java");
        

    controller包下会出现menuController

code包下 添加CodeBean.java

package com.rb.code;

public class CodeBean {
    private String columnName;//字段名字,good_name
    private String columnType;//类型
    private String columnComment;//注释
    
    private String attrName;//goodName
    private String uperName;//GoodName set/get
	
    public String getColumnName() {
		return columnName;
	}
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}
	public String getColumnType() {
		return columnType;
	}
	public void setColumnType(String columnType) {
		this.columnType = columnType;
	}
	public String getColumnComment() {
		return columnComment;
	}
	public void setColumnComment(String columnComment) {
		this.columnComment = columnComment;
	}
	public String getAttrName() {
		return attrName;
	}
	public void setAttrName(String attrName) {
		this.attrName = attrName;
	}
	public String getUperName() {
		return uperName;
	}
	public void setUperName(String uperName) {
		this.uperName = uperName;
	}
    
    
}

CodeBuilder.java 添加 如下代码

private static List<CodeBean> selectColumn(String modelName) {
		List<CodeBean> list = new ArrayList<CodeBean>();
		//java.sql里面的包
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			//注册数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			//创建数据库连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop", "root", "");
			//sql语句
			String sql = " select t.COLUMN_NAME,t.DATA_TYPE,t.COLUMN_COMMENT "
                         + " from information_schema.`COLUMNS` t "
                         + " where t.TABLE_NAME='menu' "
                         + " and t.TABLE_SCHEMA='shop' ";
			//执行
			ps = conn.prepareStatement(sql);
			//获取查询结果
			rs = ps.executeQuery();
			//循环遍历查询结果,查到columnList里面
			while (rs.next()) {
				CodeBean bean = new CodeBean();
				bean.setColumnName(rs.getString(1));
				bean.setColumnComment(rs.getString(3));
				//类型
				String type = rs.getString(2);
				if (type.equalsIgnoreCase("varchar") || type.equalsIgnoreCase("varchar2")) {//字符串
					bean.setColumnType("String");
					
				}else if(type.equalsIgnoreCase("int") || type.equalsIgnoreCase("integer")){//整数
					bean.setColumnType("Integer");
				}else if (type.equalsIgnoreCase("float") ||
						type.equalsIgnoreCase("double") ||
						type.equalsIgnoreCase("decimal")) {//小数 float double decimal
					bean.setColumnType("Double");
				}else{
					bean.setColumnType("String");
				}
				 // good_name  goodName setGoodName
				bean.setAttrName(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, bean.getColumnName()));
				bean.setUperName(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, bean.getColumnName()));
			    
				list.add(bean);
			}
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				rs.close();
				ps.close();
				conn.close();
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			
		}
		return list;
	}

	private static void merge(Template template,VelocityContext ctx,String path){
		 PrintWriter writer = null;
		 try {
			 writer = new PrintWriter(path);
			
			 template.merge(ctx, writer);
			 writer.flush();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
		
			writer.close();
		}
	}

最后 运行 CodeBuilder.java

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
熟悉项目开发过程中SSM框架、JSP、Mysql使用,知道各技术之间的如何衔接; 考虑到部分学生只需要学习前台(买家)或是后台(后台),故将电商系统分为电商系统前台和电商系统后台两个项目, 当前课程包含电商系统前台和电商系统后台 该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架 2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等 3、数据库:Mysql 4、服务器:Tomcat项目开发涉及的功能: 1、项目以及数据库搭建 2、用户登录、退出3、用户注册、邮件发送、以及用户信息激活4、首页商品信息页面搭建以及查询功能实现5、查询商品明细6、加入商品至购物车、删除、更新、清除购物车商品信息7、确认订单信息8、订单页面搭建以及下订单功能实现9、查询我的购物车以及订单信息10、商品明细查看,商品修改,商品下架11、商品类型管理12、订单管理13、代码机器人使用等等其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值