java--基础

工具类

本文主要介绍一些工具类:

一、由实体类生成sql
1.数据表工具类()
package util;

import java.lang.reflect.Field;

import annotation.Column;
import annotation.Table;
/**
* 数据表工具类
* @author ThinkPad
*
*/
public class TableUtils {

public static String getCreateTableSQl(Class<?> clazz){

    StringBuilder sb=new StringBuilder();
    sb.append("create table ");

    Table table=clazz.getAnnotation(Table.class);//获取注解的类的实例
    String tableName = table.tableName();//获取表名
    sb.append(tableName).append("(\n");
    //getFields()获得某个类的所有的公共(public)的字段,包括父类。
    //getDeclaredFields()获得某个类的所有申明的字段,即包括public、private和proteced, 但是不包括父类的申明字段。 
    Field[] fields=clazz.getDeclaredFields();
    String primaryKey = " ";
    for (int i = 0; i < fields.length; i++) {
        Column column=(Column) fields[i].getAnnotations()[0];//得到字段的属性
        String field = column.field();//字段名称
        String type = column.type();//字段类型
        boolean defaultNull = column.defaultNull();//字段是否为空

        sb.append("\t" + field).append(" ").append(type);//现在sb 为:creat table tablename 
        if(defaultNull){
            if(type.toUpperCase().equals("TIMESTAMP")){
                sb.append(",\n");
            }else{
                sb.append(" DEFAULT NULL,\n");
            }
        }else{
            sb.append(" NOT NULL,\n");
            if(column.primaryKey()){//考虑几个主键的问题
                if(StringUtils.isempty(primaryKey)){
                    primaryKey = primaryKey.concat("PRIMARY KEY (").concat(field).concat(")");
                }else{//primaryKey=PRIMARY KEY (ID)
      String info=primaryKey.split("\\)")[0];//正则\\)以)拆分
            primaryKey=info.concat(",").concat(field).concat(")");
                }

            }
        }

    }

    if(!StringUtils.isempty(primaryKey)){
        sb.append("\t").append(primaryKey);
    }
    sb.append("\n) DEFAULT CHARSET=utf8");

    return sb.toString();

}

}
2.字符串工具类
package util;
/**
* 字符串工具类
* @author ThinkPad
*
*/
public class StringUtils {
/**
* 判断字符串是否为空,或者只是空格
* @param str
* @return
*/
public static boolean isempty(String str){
return null == str || str.equals(“”) || str.matches(“\s*”);
}
/**
* 判断内容是否为空
* @param content
* @param defaultValue
* @return
*/
public static String defaultValue(String content ,String defaultValue){
if(isempty(content)){
return defaultValue;
}
return content;
}

}
3.自定义注解–字段
package annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD) //注解的目标://字段、枚举的常量
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {

public String field() ; //字段名称
public boolean primaryKey() default false;//是否为主键
public String type() default "VARCHAR(80)";//字段类型
public boolean defaultNull() default true; //是否允许为空

}
4.自定义注解–表名
package annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE) //接口、类、枚举、注解
@Retention(RetentionPolicy.RUNTIME)// 注解会在class字节码文件中存在,在运行时可以通过反射获取到
public @interface Table {

public String tableName();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值