电商项目开发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

猜你喜欢

转载自blog.csdn.net/Rziyi/article/details/89712927