收藏java代码生成器 代码生成器源码
跪求图片生成器java全代码,要求可以画图和获取屏幕并且能保存。拜托各位大神了
正好写了一个,给你看看哈
创新互联10多年成都企业网站定制服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站定制及推广,对成都火锅店设计等多个方面拥有多年建站经验的网站建设公司。
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Date;
import javax.imageio.ImageIO;
public class ScreenCapturer {
public static void main(String[] args) throws Exception{
Date date = new Date();
Robot rbt = new Robot();
BufferedImage bf = rbt.createScreenCapture(new Rectangle(1440,900)); //这是屏幕分辨率 可以根据自己的屏幕修改
File file = new File("d://"+ date.toString().replace(" ","").replace(":","")+".jpg"); //这是保存路径D盘根目录
ImageIO.write(bf,"jpg",file);
System.out.println("截图成功!保存于D盘根目录下!时间:" + date.toString());
}
}
代码生成器是干什么用的,谁用过
代码生成器是按照特定编码规范输出代码的软件,可以直接生成项目,也可以单页生成
比如动软,生成项目可以选择vs版本的,其实嘛,动软挺垃圾的,不如你去学学orm框架,很简单的,比动软的三层好得多
java代码生成器怎么用
zip包,然后自动下载下来
1.预先定义好模板
2.界面输入相关参数
3.解析模板生成代码并下载
最后放出源代码:
package com.et.controller.system.createcode;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.et.controller.base.BaseController;
import com.et.util.DelAllFile;
import com.et.util.FileDownload;
import com.et.util.FileZip;
import com.et.util.Freemarker;
import com.et.util.PageData;
import com.et.util.PathUtil;
/**
* 类名称:FreemarkerController
* 创建人:Harries
* 创建时间:2015年1月12日
* @version
*/
@Controller
@RequestMapping(value=”/createCode”)
public class CreateCodeController extends BaseController {
/**
* 生成代码
*/
@RequestMapping(value=”/proCode”)
public void proCode(HttpServletResponse response) throws Exception{
PageData pd = new PageData();
pd = this.getPageData();
/* ============================================================================================= */
String packageName = pd.getString(“packageName”); //包名 ========1
String objectName = pd.getString(“objectName”); //类名 ========2
String tabletop = pd.getString(“tabletop”); //表前缀 ========3
tabletop = null == tabletop?””:tabletop.toUpperCase(); //表前缀转大写
String zindext = pd.getString(“zindex”); //属性总数
int zindex = 0;
if(null != zindext !””.equals(zindext)){
zindex = Integer.parseInt(zindext);
}
ListString[] fieldList = new ArrayListString[](); //属性集合 ========4
for(int i=0; i zindex; i++){
fieldList.add(pd.getString(“field”+i).split(“,fh,”)); //属性放到集合里面
}
MapString,Object root = new HashMapString,Object(); //创建数据模型
root.put(“fieldList”, fieldList);
root.put(“packageName”, packageName); //包名
root.put(“objectName”, objectName); //类名
root.put(“objectNameLower”, objectName.toLowerCase()); //类名(全小写)
root.put(“objectNameUpper”, objectName.toUpperCase()); //类名(全大写)
root.put(“tabletop”, tabletop); //表前缀
root.put(“nowDate”, new Date()); //当前日期
DelAllFile.delFolder(PathUtil.getClasspath()+”admin/ftl”); //生成代码前,先清空之前生成的代码
/* ============================================================================================= */
String filePath = “admin/ftl/code/”; //存放路径
String ftlPath = “createCode”; //ftl路径
/*生成controller*/
Freemarker.printFile(“controllerTemplate.ftl”, root, “controller/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName+”Controller.java”, filePath, ftlPath);
/*生成service*/
Freemarker.printFile(“serviceTemplate.ftl”, root, “service/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName+”Service.java”, filePath, ftlPath);
/*生成mybatis xml*/
Freemarker.printFile(“mapperMysqlTemplate.ftl”, root, “mybatis_mysql/”+packageName+”/”+objectName+”Mapper.xml”, filePath, ftlPath);
Freemarker.printFile(“mapperOracleTemplate.ftl”, root, “mybatis_oracle/”+packageName+”/”+objectName+”Mapper.xml”, filePath, ftlPath);
/*生成SQL脚本*/
Freemarker.printFile(“mysql_SQL_Template.ftl”, root, “mysql数据库脚本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
Freemarker.printFile(“oracle_SQL_Template.ftl”, root, “oracle数据库脚本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
/*生成jsp页面*/
Freemarker.printFile(“jsp_list_Template.ftl”, root, “jsp/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName.toLowerCase()+”_list.jsp”, filePath, ftlPath);
Freemarker.printFile(“jsp_edit_Template.ftl”, root, “jsp/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName.toLowerCase()+”_edit.jsp”, filePath, ftlPath);
/*生成说明文档*/
Freemarker.printFile(“docTemplate.ftl”, root, “说明.doc”, filePath, ftlPath);
//this.print(“oracle_SQL_Template.ftl”, root); 控制台打印
/*生成的全部代码压缩成zip文件*/
FileZip.zip(PathUtil.getClasspath()+”admin/ftl/code”, PathUtil.getClasspath()+”admin/ftl/code.zip”);
/*下载代码*/
FileDownload.fileDownload(response, PathUtil.getClasspath()+”admin/ftl/code.zip”, “code.zip”);
}
}
求助大神,要求用java代码写一个序列生成器
import java.util.HashMap;
import java.security.KeyException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 类codeKey/code是一个数据库主键生成器,用序列号的方式来产生数据库中需要的主键值。
* p
* codeKey/code目前支持的数据库包括Oracle的所有版本、MySql的3.x以上的版本
* 以及所有支持max()函数的数据库,支持字段类型仅为数字类型的主键,对于字符及其它类型的主键尚不提供支持。
* p
* 在使用时只需提供表名、字段名(主键)以及到数据库的JDBC连接,如果想要获得message表的id字段的下一个 主键值时:
* p
* blockquote
*
* pre
* java.sql.Connection conn = ...;
* org.shaoye.common.sql.Key key = org.shaoye.common.sql.Key.getInstance();
* int keyValue = key.getNextKey("message", "id", conn);
* String sql = "insert into message (id,...) values (" + keyValue + ",...)";
* //执行插入操作...
* /pre
*
* /blockquote
* p
*
* @author 令少爷(shaoye@vip.sina.com)
* @since magic 0.1
*/
public final class Key {
/**
* key的最大值,默认为9223372036854775807,即long类型的最大值
*/
private long max = 9223372036854775807L;
/**
* key的最小值,默认为1
* */
private long min = 1L;
/**
* Key的唯一实例,通过getInstance()方法获得
* */
private static Key keygen = new Key();
/**
* KeyInfo类的实例列表,默认容量为5个
* */
private HashMapString, KeyInfo keyList = new HashMapString, KeyInfo(5); // keyInfo
// 列表
/**
* 私有的默认构造方法,防止外部构造类的实例
* */
private Key() {
}
/**
* 获得Key的唯一实例
* */
public static Key getInstance() {
return keygen;
}
/**
* 用指定的表和字段获得key的下一个值,主键的值不得超过2147483647
*
* @param tableName
* 数据库中的表名,表中必须有一个数字主键
* @param keyName
* 表(tableName)中的字段名
* @param conn
* JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的下一个主键的int值
* @throws codeKeyException/code
* 如果表名或字段名不存在、访问数据库错误或key的值大于2147483647时抛出
*/
public int getNextKey(String tableName, String keyName, Connection conn)
throws KeyException {
long value = getNextKeyLong(tableName, keyName, conn);
if (value 2147483647L) {
throw new KeyException(
"Key's value too big,please call getNextKeyLong method!");
}
return (new Long(value)).intValue();
}
/**
* 用指定的表和字段获得key的下一个值,最大为9223372036854775807
* @param tableName 数据库中的表名,表中必须有一个数字主键
* @param keyName 表(tableName)中的字段名
* @param conn JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的下一个主键的long值
* @throws codeKeyException/code 如果表名或字段名不存在或访问数据库错误时抛出
*/
public long getNextKeyLong(String tableName, String keyName, Connection conn)
throws KeyException {
KeyInfo keyinfo;
String item = tableName + "." + keyName;
try {
if (keyList.containsKey(item)) {
keyinfo = (KeyInfo) keyList.get(item);
} else {
keyinfo = new KeyInfo(tableName, keyName, conn);
keyList.put(item, keyinfo);
}
return keyinfo.getNextKey();
} catch (SQLException sqle) {
throw new KeyException(sqle);
}
}
/**
* 用指定的"表code./code字段"形式的字符串获得key的下一个值,主键的值不得超过2147483647
* @param tableDotField "表.字段"形式的字符串,如:message.id
* @param conn JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的下一个主键的int值
* @throws codeKeyException/code 如果表名或字段名不存在、访问数据库错误或key的值 大于2147483647时抛出
*/
public int getNextKey(String tableDotField, Connection conn)
throws KeyException {
long value = getNextKeyLong(tableDotField, conn);
if (value 2147483647L) {
throw new KeyException(
"Key's value too big,please call getNextKeyLong method!");
}
return (new Long(value)).intValue();
}
/**
* 用指定的"表code./code字段"形式的字符串获得key的下一个值,最大为9223372036854775807
* @param tableDotField "表.字段"形式的字符串,如:message.id
* @param conn JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的下一个主键的int值
* @throws codeKeyException/code 如果表名或字段名不存在或访问数据库错误时抛出
*/
public long getNextKeyLong(String tableDotField, Connection conn)
throws KeyException {
int dot_index = tableDotField.indexOf(".");
if (tableDotField.indexOf(".") 1) {
throw new KeyException("Unknown Key '" + tableDotField + "'!");
}
String tab = tableDotField.substring(0, dot_index);
String key = tableDotField.substring(dot_index);
return getNextKeyLong(tab, key, conn);
}
/**
* 用指定的表和字段获得key的当前值,主键的值不得超过2147483647
* @param tableName 数据库中的表名,表中必须有一个数字主键
* @param keyName 表(tableName)中的字段名
* @param conn JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的当前int值
* @throws codeKeyException/code
* 如果表名或字段名不存在、访问数据库错误或key的值大于2147483647时抛出
*/
public int getCurrentKey(String tableName, String keyName, Connection conn)
throws KeyException {
long value = getCurrentKeyLong(tableName, keyName, conn);
if (value 2147483647L) {
throw new KeyException(
"Key's value too big,please call getCurrentKeyLong method!");
}
return (new Long(value)).intValue();
}
/**
* 用指定的表和字段获得key的当前值,最大为9223372036854775807
*
* @param tableName
* 数据库中的表名,表中必须有一个数字主键
* @param keyName
* 表(tableName)中的字段名
* @param conn
* JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的当前long值
* @throws codeKeyException/code 如果表名或字段名不存在或访问数据库错误时抛出
*/
public long getCurrentKeyLong(String tableName, String keyName,
Connection conn) throws KeyException {
KeyInfo keyinfo;
String item = tableName + "." + keyName;
try {
synchronized (keyList) {
if (keyList.containsKey(item)) {
keyinfo = (KeyInfo) keyList.get(item);
} else {
keyinfo = new KeyInfo(tableName, keyName, conn);
keyList.put(item, keyinfo);
}
}
return keyinfo.getCurrentKey();
} catch (SQLException sqle) {
throw new KeyException(sqle);
}
}
/**
* 用指定的"表code./code字段"形式的字符串获得key的当前值,主键的值不得超过2147483647
*
* @param tableDotField
* "表.字段"形式的字符串,如:message.id
* @param conn
* JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的当前int值
* @throws codeKeyException/code 如果表名或字段名不存在、访问数据库错误或key的值
* 大于2147483647时抛出
*/
public int getCurrentKey(String tableDotField, Connection conn)
throws KeyException {
long value = getCurrentKeyLong(tableDotField, conn);
if (value 2147483647L) {
throw new KeyException(
"Key's value too big,please call getNextKeyLong method!");
}
return (new Long(value)).intValue();
}
/**
* 用指定的"表code./code字段"形式的字符串获得key的当前值,最大为9223372036854775807
*
* @param tableDotField
* "表.字段"形式的字符串,如:message.id
* @param conn
* JDBC连接,如果欲获得的key是第一次取值,则必须保证conn能连接到数据库
* @return key的当前int值
* @throws codeKeyException/code 如果表名或字段名不存在或访问数据库错误时抛出
*/
public long getCurrentKeyLong(String tableDotField, Connection conn)
throws KeyException {
int dot_index = tableDotField.indexOf(".");
if (tableDotField.indexOf(".") 1) {
throw new KeyException("Unknown Key '" + tableDotField + "'!");
}
String tab = tableDotField.substring(0, dot_index);
String key = tableDotField.substring(dot_index);
return getCurrentKeyLong(tab, key, conn);
}
}
/**
* 内部类,用来存储主键信息
* */
class KeyInfo {
private long max = 9223372036854775807L;
private long min = 1L;
private long nextKey;
private String tableName;
private String keyName;
private Connection conn = null;
/**
* keyInfo 对象初始化
*
* @throws KeyException
*/
KeyInfo(String tableName, String keyName, Connection _conn)
throws SQLException, KeyException {
this.tableName = tableName;
this.keyName = keyName;
this.conn = _conn;
retrieveFromDB();
}
int getMax() {
return (new Long(max)).intValue();
}
long getMaxLong() {
return max;
}
int getMin() {
return (new Long(min)).intValue();
}
long getMinLong() {
return min;
}
/**
* 取下一键值
*/
int getNextKey() {
return (new Long(getNextKeyLong())).intValue();
}
/**
* 取下一键值
*/
synchronized long getNextKeyLong() {
nextKey++;
return nextKey;
}
/**
* 取当前键值
*/
synchronized int getCurrentKey() {
return (new Long(nextKey)).intValue();
}
/**
* 取当前键值
*/
synchronized long getCurrentKeyLong() {
return nextKey;
}
/**
* 从数据库中取当前最大值
*
* @throws KeyException
*/
void retrieveFromDB() throws SQLException, KeyException {
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select max(" + keyName + ") from " + tableName;
try {
pstmt = conn.prepareStatement(sql);
} catch (Exception ex) {
throw new KeyException("Can't connect DataBase!");
}
try {
rs = pstmt.executeQuery();
} catch (SQLException sqle) {
if (pstmt != null)
pstmt.close();
throw new KeyException("'" + keyName + "' or '" + tableName
+ "' isn't exist in DataBase!", sqle);
}
try {
if (rs.next()) {
nextKey = rs.getLong(1);
if (nextKey min) {
nextKey = min;
}
} else {
nextKey = min;
}
} catch (SQLException sqle) {
throw (sqle);
} finally {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
}
}
}
java低代码开发平台有哪些
JNPF低代码开发平台可以以极少量代码或无代码的方式开发各种企业级管理系统,其特点如下:
1. web在线开发
低代码开发平台是个全Web可视化开发和运行架构,只要在web端网页就能开发,不需要安装配置复杂的本地开发环境;
2. 代码生成器
依托代码生成器,开发人员大大减少了代码编辑量,并且生成的代码还可下载拷贝应用,可根据需求进行个性化修改;
3. 工作流引擎
工作流引擎可以轻松快捷的搭建业务流程管理系统和协同交互管理体系,可随时按需更改流程逻辑以适应新需求;
4. 流程设计器
流程设计器集成了表单设计器和流程引擎,并支持线性流程、父子流程、同步分合流、异步分合流程,全部实现可视化设计;
5. 全源码交付
低代码开发平台提供商业化的全源码交付,可进行二次个性化开发,减少了代码编写,简化了开发流程,提升了开发效率;
6. 更新升级快速
如果需求发生变化,用户只需通过web端网页登录开发账号,调整相应的功能并发布即可,整个过程可能只需要几分钟便可完成;
7. 数据管理强大
低代码开发平台的数据处理功能十分强大,可自动生成各种报表,还可以以大屏的方式直观的呈现出实时的动态数据;
8. 缩减开发成本
传统的编程开发模式需要许多人来共同协作研发,现在运用低代码开发平台只需要两三个甚至一个人便可完成开发工作;
9. 部署方式灵活
平台的部署方式十分多样化,可实现公有云和私有云部署,也可进行本地化部署,以满足企业多变的差异化需求;
10. 快速开发SaaS
平台可以轻松快速地开发ERP、CRM、HRM、BPM、OA、财务管理等各类SaaS管理系统和业务管理系统,助力企业效益提升;
这便是JNPF低代码开发平台的主要特点和优势,其大大优于第三方定制开发以及企业自主探索开发等几种传统的开发方式。运用JNPF低代码开发平台,开发者可以高效快速的开发各种企业管理系统,并还可以进行各种子系统、子平台的开发拓展,以满足企业各种复杂的管理运营需求,同时系统的更新升级也十分敏捷方便。
java代码生成器是什么
代码生成器就是根据特定的要求制定格式,灵活输出在项目中重复要用到的代码,节省项目时间,现在免费的代码生成器codesmith我经常用的,小玩意,不花钱
标题名称:收藏java代码生成器 代码生成器源码
链接地址:http://ybzwz.com/article/dodgipd.html