原因:我在开发一个简单的mvc架构的系统时(不用struts和ejb),.发现对于简单的表实现增删改操作比较简单,无非就是谢几个方法几个sql,表单提交一些数据,来完成.但是,如果表的字段过多,如上百个,甚至更多.处理起来很繁琐,主要繁琐点在于:
1.学插入语句的sql,insert语句,是在不能手写.
2,更新操作的sql也是长的要命
3,数据查询处理,给数据结构类(struts中的actionform,ejb中的实体bean)赋值语句.不能手写.
4,最要命的页面中添加或修改页面提交页(如果没有使用useBean的参数全部匹配),全用
request.getParameter(“name“);来处理的话,更是死人.
解决方法:让代码来生成这些代码,
实现方案:我们都知道,我们数据库中的每个表,都会需要一个数据结构类来保存数据,着个数据结构类和表的结构基本一至,这个结构一般也是生产的,在jb中或其他ide中都提供生产方法.,在生产的时候我们做一点注意,就是保正属性名字和表中字段的名字一致.我们利用这个结构类来生产我们需要的代码.
过程:
1.假如结构类的内容如下(必须按下列格式,在jb中生成的就是这种形式,其他IDE也差不多):
private long id;
private String com_code=“111“;
private float e7;
private float e8;
private float e9;
private float e10;
.............
2.我们对该数据进行过虑,其实我们需要的只有,type和name.我们只需要解析这个文件,提出没一行中的type和name,这样就可以生成我们需要的代码.
3.意思应该将清楚了吧.至于下面的代码,就不用看了,当时写的,很乱,但是能工作.现在也懒的再重构了.其中的aa.txt就是上面数据结构类的内容.输出的结构是再控制台打印.bb.txt没有用到.:)
说白了,其实也是垃圾一堆.没有什么技术含量,用到的无法是一个截取字符串的操作.:) :)
使用结合参考:http://blog.csdn.net/shaokun305/archive/2004/08/01/57794.aspx
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: 乐开工作室</p>
* @author 陈少坤
* @version 1.0
*/
import java.io.*;
public class CodeMaker {
public CodeMaker() {
}
public static void main(String[] args) {
CodeMaker codeMaker1 = new CodeMaker();
System.out.println("//");
codeMaker1.get();
codeMaker1.set();
codeMaker1.getInsertSql();
codeMaker1.getUpdateSql();
codeMaker1.getSumSql();
}
/**
* 一个提页面的获取数据的代码生成。
*/
public void get(){
String path="c://aa.txt";
String path1="c://bb.txt";
java.io.BufferedReader bin=null;
java.io.BufferedWriter bout=null;
try {
bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
}
catch (IOException ex) {
ex.printStackTrace();
}
if(bin!=null){
String aa=null;
try {
while((aa=bin.readLine())!=null){
//System.out.println("aa==="+aa);
int begin=aa.indexOf("private");
int end=aa.indexOf(";");
if(begin==-1)
break;
String bb=aa.substring(begin+8,end);
String[] cc=bb.split(" ");
if(cc!=null){
String c1=cc[0];
String c2=cc[1];
if(c2.indexOf("=")!=-1){
c2=c2.substring(0,c2.indexOf("="));
}
//System.out.println("c1="+c1);
// System.out.println("c2="+c2);
String aa1=c2.substring(0,1).toUpperCase();
String c22=aa1+c2.substring(1);
if(c1.equals("String")){
System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
System.out.println("xxx.set"+c22+"(request.getParameter(/""+c2+"/"));");
}
if(c1.equals("long")){
System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
System.out.println("xxx.set"+c22+"(Long.parseLong(request.getParameter(/""+c2+"/")));");
}
if(c1.equals("float")){
System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
System.out.println("xxx.set"+c22+"(Float.parseFloat(request.getParameter(/""+c2+"/")));");
}
if(c1.equals("int")){
System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
System.out.println("xxx.set"+c22+"(Integer.parseInt(request.getParameter(/""+c2+"/")));");
}
if(c1.equals("double")){
System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
System.out.println("xxx.set"+c22+"(Double.parseDouble(request.getParameter(/""+c2+"/")));");
}
}
aa=null;
}
System.out.println("//");
bin.close();
bout.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* 给数据结构类赋值的函数。
*/
public void set(){
String path="c://aa.txt";
String path1="c://bb.txt";
java.io.BufferedReader bin=null;
java.io.BufferedWriter bout=null;
try {
bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
}
catch (IOException ex) {
ex.printStackTrace();
}
if(bin!=null){
String aa=null;
try {
while((aa=bin.readLine())!=null){
//System.out.println("aa==="+aa);
int begin=aa.indexOf("private");
int end=aa.indexOf(";");
if(begin==-1)
break;
String bb=aa.substring(begin+8,end);
String[] cc=bb.split(" ");
if(cc!=null){
String c1=cc[0];
String c2=cc[1];
if(c2.indexOf("=")!=-1){
c2=c2.substring(0,c2.indexOf("="));
}
//System.out.println("c1="+c1);
// System.out.println("c2="+c2);
String aa1=c2.substring(0,1).toUpperCase();
String c22=aa1+c2.substring(1);
if(c1.equals("String")){
System.out.println("xxx.set"+c22+"(rs.getString(/""+c2+"/"));");
}
if(c1.equals("long")){
System.out.println("xxx.set"+c22+"(rs.getLong(/""+c2+"/"));");
}
if(c1.equals("float")){
System.out.println("xxx.set"+c22+"(rs.getFloat(/""+c2+"/"));");
}
if(c1.equals("int")){
System.out.println("xxx.set"+c22+"(rs.getInt(/""+c2+"/"));");
}
if(c1.equals("double")){
System.out.println("xxx.set"+c22+"(rs.getDouble(/""+c2+"/"));");
}
}
aa=null;
}
System.out.println("//");
bin.close();
bout.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void getInsertSql(){
String path="c://aa.txt";
String path1="c://bb.txt";
int count=0;
String sql="insert into *****(";
String para="{";
java.io.BufferedReader bin=null;
java.io.BufferedWriter bout=null;
try {
bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
}
catch (IOException ex) {
ex.printStackTrace();
}
if(bin!=null){
String aa=null;
try {
while((aa=bin.readLine())!=null){
//System.out.println("aa==="+aa);
int begin=aa.indexOf("private");
int end=aa.indexOf(";");
if(begin==-1)
break;
count++;//计数,看看需要多少个?来补充sql字符串
String bb=aa.substring(begin+8,end);
String[] cc=bb.split(" ");
if(cc!=null){
String c1=cc[0];
String c2=cc[1];
if(c2.indexOf("=")!=-1){
c2=c2.substring(0,c2.indexOf("="));
}
//System.out.println("c1="+c1);
// System.out.println("c2="+c2);
String aa1=c2.substring(0,1).toUpperCase();
String c22=aa1+c2.substring(1);
//
sql+=c2+",";
if(c1.equals("String")){
para+="/"String/",xxx.get"+c22+"(),";
}
if(c1.equals("long")){
para+="/"long/",/"/"+xxx.get"+c22+"(),";
}
if(c1.equals("float")){
para+="/"float/",/"/"+xxx.get"+c22+"(),";
}
if(c1.equals("int")){
para+="/"int/",/"/"+xxx.get"+c22+"(),";
}
if(c1.equals("double")){
para+="/"double/",/"/"+xxx.get"+c22+"(),";
}
}
aa=null;
}//while循环
para=para.substring(0,para.length()-1)+"};";
sql=sql.substring(0,sql.length()-1);
sql+=") values(";
for(int i=0;i
sql+="?,";
}
sql=sql.substring(0,sql.length()-1)+")";
///
System.out.println("String sql=/""+sql+"/";");
System.out.println("Object[] para="+para);
System.out.println("//");
bin.close();
bout.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* 获得updage的sql语句
*/
public void getUpdateSql(){
String path="c://aa.txt";
String path1="c://bb.txt";
int count=0;
String sql="update ***** set ";
String para="{";
java.io.BufferedReader bin=null;
java.io.BufferedWriter bout=null;
try {
bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
}
catch (IOException ex) {
ex.printStackTrace();
}
if(bin!=null){
String aa=null;
try {
while((aa=bin.readLine())!=null){
//System.out.println("aa==="+aa);
int begin=aa.indexOf("private");
int end=aa.indexOf(";");
if(begin==-1)
break;
count++;//计数,看看需要多少个?来补充sql字符串
String bb=aa.substring(begin+8,end);
String[] cc=bb.split(" ");
if(cc!=null){
String c1=cc[0];
String c2=cc[1];
if(c2.indexOf("=")!=-1){
c2=c2.substring(0,c2.indexOf("="));
}
//System.out.println("c1="+c1);
// System.out.println("c2="+c2);
String aa1=c2.substring(0,1).toUpperCase();
String c22=aa1+c2.substring(1);
//
sql+=c2+"=?,";
if(c1.equals("String")){
para+="/"String/",xxx.get"+c22+"(),";
}
if(c1.equals("long")){
para+="/"long/",/"/"+xxx.get"+c22+"(),";
}
if(c1.equals("float")){
para+="/"float/",/"/"+xxx.get"+c22+"(),";
}
if(c1.equals("int")){
para+="/"int/",/"/"+xxx.get"+c22+"(),";
}
if(c1.equals("double")){
para+="/"double/",/"/"+xxx.get"+c22+"(),";
}
}
aa=null;
}//while循环
para=para.substring(0,para.length()-1)+"};";
sql=sql;
sql=sql.substring(0,sql.length()-1)+" where id=?";
///
System.out.println("String sql=/""+sql+"/";");
System.out.println("Object[] para="+para);
System.out.println("//");
bin.close();
bout.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* 获得统计所有字段的函数
*/
public void getSumSql(){
String path="c://aa.txt";
String path1="c://bb.txt";
int count=0;
String sql="select ";
java.io.BufferedReader bin=null;
java.io.BufferedWriter bout=null;
try {
bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
}
catch (IOException ex) {
ex.printStackTrace();
}
if(bin!=null){
String aa=null;
try {
while((aa=bin.readLine())!=null){
//System.out.println("aa==="+aa);
int begin=aa.indexOf("private");
int end=aa.indexOf(";");
if(begin==-1)
break;
count++;//计数,看看需要多少个?来补充sql字符串
String bb=aa.substring(begin+8,end);
String[] cc=bb.split(" ");
if(cc!=null){
String c1=cc[0];
String c2=cc[1];
if(c2.indexOf("=")!=-1){
c2=c2.substring(0,c2.indexOf("="));
}
//System.out.println("c1="+c1);
// System.out.println("c2="+c2);
String aa1=c2.substring(0,1).toUpperCase();
String c22=aa1+c2.substring(1);
//
sql+="sum("+c2+") as "+c2+",";
}
aa=null;
}//while循环
sql=sql.substring(0,sql.length()-1);
sql+=" from **** where com_code<>'/"+com_code+/"'and sum_year=/"+year+/" and is_submit=1";
///
System.out.println("String sql=/""+sql+"/";");
System.out.println("//");
bin.close();
bout.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
}