Package net.loyin.jFinal.plugin

Source Code of net.loyin.jFinal.plugin.AutoTableBindPlugin

package net.loyin.jFinal.plugin;

import java.util.List;

import javax.sql.DataSource;

import net.loyin.jFinal.anatation.TableBind;

import com.jfinal.kit.StringKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.IDataSourceProvider;
import com.jfinal.plugin.activerecord.Model;
/***
* 自动绑定model与数据库表
* @author loyin
*  2012-9-4 上午11:45:09
*/
public class AutoTableBindPlugin extends ActiveRecordPlugin {
  private TableNameStyle tableNameStyle;
  public AutoTableBindPlugin(DataSource dataSource) {
    super(dataSource);
  }

  public AutoTableBindPlugin(IDataSourceProvider dataSourceProvider, TableNameStyle tableNameStyle) {
    super(dataSourceProvider);
    this.tableNameStyle = tableNameStyle;
  }

  @SuppressWarnings({ "rawtypes", "unchecked" })
  @Override
  public boolean start() {
    try {
      List<Class> modelClasses = ClassSearcher.findClasses(Model.class);
      TableBind tb = null;
      for (Class modelClass : modelClasses) {
        tb = (TableBind) modelClass.getAnnotation(TableBind.class);
        if (tb == null) {
          this.addMapping(tableName(modelClass), modelClass);
        } else {
          if(StringKit.notBlank(tb.name())){
            if (StringKit.notBlank(tb.pk())) {
              this.addMapping(tb.name(), tb.pk(), modelClass);
            } else {
              this.addMapping(tb.name(), modelClass);
            }
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
//      throw new RuntimeException(e);
    }
    return super.start();
  }

  @Override
  public boolean stop() {
    return super.stop();
  }

  private String tableName(Class<?> clazz) {
    String tableName = clazz.getSimpleName();
    if (tableNameStyle == TableNameStyle.UP) {
      tableName = tableName.toUpperCase();
    } else if (tableNameStyle == TableNameStyle.LOWER) {
      tableName = tableName.toLowerCase();
    } else {
      tableName = StringKit.firstCharToLowerCase(tableName);
    }
    return tableName;
  }
}
TOP

Related Classes of net.loyin.jFinal.plugin.AutoTableBindPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.