mysql 表 实体类_TableMapping数据库表实体类对应

package org.jiucheng.util;

import java.io.Serializable;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.jiucheng.entity.BaseEntity;

/**

*

* @author 旧城(jiucheng.org@gmail.com)

*

*/

public class TableMapping implements Serializable{

private static final long serialVersionUID = -3319792150302540890L;

public final static String DEFAULT_PRIMARY_KEY = "id";

private final static Map strs = new HashMap();

private final static Map, TableMapping> pools = new HashMap, TableMapping>();

public final static String SET = "set";

public final static String GET = "get";

@SuppressWarnings("unused")

private Class extends BaseEntity> clazz;

private String tableName;

private String primaryKey;

private List columns;

public static class ColumnMapping implements Serializable{

private static final long serialVersionUID = -1042725024561237385L;

private String tableColumn;

private String clazzColumn;

private String getMethodName;

private String setMethodName;

private Class> clazzType;

public String getTableColumn() {

return tableColumn;

}

public String getGetMethodName() {

return getMethodName;

}

public String getSetMethodName() {

return setMethodName;

}

public Class> getClazzType() {

return clazzType;

}

public String getClazzColumn() {

return clazzColumn;

}

}

public static String getCacheStr(String str) {

String s = strs.get(str.hashCode());

if(s == null) {

strs.put(str.hashCode(), str);

s = str;

}

return s;

}

/**

* 获取GetMethod

* @param clazz

* @param columnName

* @return

*/

public static Method getGetMethod(Class extends BaseEntity> clazz, String columnName) {

TableMapping tm = getTableMapping(clazz);

for(ColumnMapping col : tm.columns) {

if(col.tableColumn.equals(columnName)) {

try {

return clazz.getMethod(col.getMethodName);

}catch(Exception e) {}

}

}

return null;

}

/**

* 获取SetMethod

* @param clazz

* @param columnName

* @return

*/

public static Method getSetMethod(Class extends BaseEntity> clazz, String columnName) {

TableMapping tm = getTableMapping(clazz);

for(ColumnMapping col : tm.columns) {

if(col.tableColumn.equals(columnName)) {

try {

return clazz.getMethod(col.setMethodName, col.clazzType);

}catch(Exception e) {}

}

}

return null;

}

/**

* 获取table.column

* @param clazz

* @param m

* @return

*/

public static String getColumn(Class extends BaseEntity> clazz, Method m) {

TableMapping tm = getTableMapping(clazz);

String methodName = m.getName();

for(ColumnMapping col : tm.columns) {

if(col.getMethodName.equals(methodName) || col.setMethodName.equals(methodName)) {

return col.tableColumn;

}

}

return null;

}

/**

* 获取表名

* @param clazz

* @return

*/

public static String getTableName(Class extends BaseEntity> clazz) {

return getTableMapping(clazz).tableName;

}

/**

* 获取表中主键字段

* @param clazz

* @return

*/

public static String getPrimaryKey(Class extends BaseEntity> clazz) {

return getTableMapping(clazz).primaryKey;

}

private static TableMapping getTableMapping(Class extends BaseEntity> clazz) {

TableMapping tm = pools.get(clazz);

if(tm == null) {

tm = load(clazz);

}

return tm;

}

private static TableMapping load(Class extends BaseEntity> clazz) {

TableMapping tm = new TableMapping(clazz);

TableMapping.pools.put(clazz, tm);

return tm;

}

private TableMapping(Class extends BaseEntity> clazz) {

init(clazz);

}

private void init(Class extends BaseEntity> clazz) {

this.columns = new ArrayList();

this.clazz = clazz;

this.tableName = getCacheStr(TableUtil.clazzToTableName(clazz));

this.primaryKey = getCacheStr(TableUtil.clazzToTableKey(clazz));

initColumns(clazz);

}

private void initColumns(Class extends BaseEntity> clazz) {

List ms = TableUtil.listMethod(clazz, "^set.+");

ColumnMapping col;

for(Method m : ms) {

col = new ColumnMapping();

col.tableColumn = getCacheStr(TableUtil.methodToColumnName(m));

col.clazzColumn = getCacheStr(TableUtil.setOrGetmethodToHump(m));

col.getMethodName = getCacheStr(m.getName().replaceFirst("set", "get"));

col.setMethodName = getCacheStr(m.getName());

col.clazzType = m.getParameterTypes()[0];

columns.add(col);

}

}

public static List getColumnMappings(Class extends BaseEntity> clazz) {

return getTableMapping(clazz).columns;

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值