数据库工具类(二)
来源:互联网 发布:java short类型 编辑:程序博客网 时间:2024/05/22 17:11
通过调用DataBaseClass实现调用
DataBaseClass类
package com.lbf.database;import java.sql.*;import java.util.*;/** * 数据库访问操作类(操作数据库时使用) * @author Wing.King */public class DataBaseClass {private static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<Connection>();//数据库连接集合private static boolean isDriver=false;//数据库驱动是否加载成功(默认失败)private static String errorDriver="NO";//数据库驱动是否加载成功(错误消息)private static String DRIVER="";//加载数据库驱动private static String DATABASE="";//数据库连接字符串private static String USERNAME="";//数据库登录用户名private static String PASSWORD="";//数据库登录密码/** * 静态构造函数:关联类。当首次使用该类时,该静态构造函数就会被系统调用。 * 当首次使用该类时,类中的代码才会被系统加载到代码区。 * 加载数据库的驱动 */static { try { //1.知道数据库的连接字符串:数据库IP地址,端口号码,数据库名称,登陆账户,密码(决定连接哪一个数据库)。DataBaseClass.DRIVER=PropertiesReader.getConnectionKey("driver");//读取配置文件中的内容DataBaseClass.DATABASE=PropertiesReader.getConnectionKey("dataBase");//读取配置文件中的内容DataBaseClass.USERNAME=PropertiesReader.getConnectionKey("userName");//读取配置文件中的内容DataBaseClass.PASSWORD=PropertiesReader.getConnectionKey("passWord");//读取配置文件中的内容//2.加载数据库驱动(决定操作什么类型的数据库。是SQL还是Oracle)Class.forName(DataBaseClass.DRIVER);//Class.forName()函数的本意不是用来加载数据库驱动。本意加载类,将类读取到内存中。DataBaseClass.isDriver=true;DataBaseClass.errorDriver="OK";} catch(ClassNotFoundException e) { DataBaseClass.isDriver=false;DataBaseClass.errorDriver=e.getMessage();//System.err.println("加载数据库驱动失败!Error:"+e.getMessage());//e.printStackTrace();}}/** * 构造函数:关联对象。每创建一个类的实例是会被系统自动调用(new创建对象时)。 * 私有构造函数,用于说明该类在类的外部不能被实例化 */private DataBaseClass() { //}/** * 创建并获取数据库连接 * @return 数据库连接 * @throws DataBaseException */private static Connection getConnection() throws DataBaseException { if (!DataBaseClass.isDriver) { throw new DataBaseException("加载数据库驱动失败!Error:"+DataBaseClass.errorDriver);}//3.建立数据库连接Connection conn=(Connection)DataBaseClass.THREAD_LOCAL.get();try { if (conn==null || conn.isClosed()) { conn=DriverManager.getConnection(DataBaseClass.DATABASE,DataBaseClass.USERNAME,DataBaseClass.PASSWORD);//创建数据库连接//通过DriverManager.getConnection()函数获得一个数据库连接对象,该对象根据加载的数据库驱动的不同而不同。//不论Oralce,还是SQL所建立的这个对象都继承Connection。DataBaseClass.THREAD_LOCAL.set(conn);System.out.println("数据库连接已开启");}} catch (SQLException e) {throw new DataBaseException("创建数据库连接失败!Error:"+e.getMessage());//System.err.println("创建数据库连接失败!Error:"+e.getMessage());//e.printStackTrace();}return conn;}/** * 开始一个事务 * @throws DataBaseException */public static void beginTransaction() throws DataBaseException {Connection conn=DataBaseClass.getConnection();try {conn.setAutoCommit(false);System.out.println("数据库事务已开启");} catch (SQLException e) {throw new DataBaseException("开始数据库事务失败!Error:"+e.getMessage());//System.err.println("开始数据库事务失败!Error:"+e.getMessage());//e.printStackTrace();}}/** * 结束一个事务 * @throws DataBaseException */private static void endTransaction() throws DataBaseException {Connection conn=DataBaseClass.getConnection();try {conn.setAutoCommit(true);System.out.println("数据库事务已结束");} catch (SQLException e) {throw new DataBaseException("结束数据库事务失败!Error:"+e.getMessage());//System.err.println("结束数据库事务失败!Error:"+e.getMessage());//e.printStackTrace();}}/** * 提交事务 * @throws DataBaseException */public static void commit() throws DataBaseException {Connection conn=DataBaseClass.getConnection();try {conn.commit();System.out.println("数据库事务已提交");} catch (SQLException e) {throw new DataBaseException("提交数据库事务失败!Error:"+e.getMessage());//System.err.println("提交数据库事务失败!Error:"+e.getMessage());//e.printStackTrace();}DataBaseClass.endTransaction();DataBaseClass.closeConnection();}/** * 回滚事务 * @throws DataBaseException */public static void rollback() throws DataBaseException {Connection conn=DataBaseClass.getConnection();try {conn.rollback();System.out.println("数据库事务已回滚");} catch (SQLException e) {throw new DataBaseException("回滚数据库事务失败!Error:"+e.getMessage());//System.err.println("回滚数据库事务失败!Error:"+e.getMessage());//e.printStackTrace();}DataBaseClass.endTransaction();DataBaseClass.closeConnection();}/** * 创建SQL数据库操作对象 * @return 数据库操作对象 * @throws DataBaseException */private static Statement createSqlCommand() throws DataBaseException { Connection conn=DataBaseClass.getConnection();try { return conn.createStatement();//无参数创建文本} catch (SQLException e) {throw new DataBaseException("创建数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();}}/** * 创建SQL数据库操作对象 * @param sql sql语句 * @param params sql参数 * @return 数据库操作对象 * @throws DataBaseException */private static PreparedStatement createSqlCommand(String sql,Object[] params) throws DataBaseException { Connection conn=DataBaseClass.getConnection();try { if (params!=null && params.length>0) { PreparedStatement cmdTemp=conn.prepareStatement(sql);//有参数创建预编译操作对象for (int i=0;i<params.length;i++) { if (params[i] instanceof java.util.Date) { java.util.Date temp=(java.util.Date)params[i];java.sql.Date date=new java.sql.Date(temp.getTime());cmdTemp.setDate(i+1, date);} else { cmdTemp.setObject(i+1, params[i]);}}return cmdTemp;} else { throw new SQLException("操作参数不存在.");}} catch (SQLException e) {throw new DataBaseException("创建数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();}}/** * 执行数据库操作:添加,修改,删除 * @param sql 执行的SQL语句 * @return 执行语句所影响的行数(大于0执行成功)。 * @throws DataBaseException */public static int executeUpdate(String sql) throws DataBaseException { try { return DataBaseClass.createSqlCommand().executeUpdate(sql);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:添加,修改,删除 * @param sql 执行的SQL语句 * @param params 执行SQL语句所需的参数 * @return 执行语句所影响的行数(大于0执行成功)。 * @throws DataBaseException */public static int executeUpdate(String sql,Object[] params) throws DataBaseException { try { return DataBaseClass.createSqlCommand(sql, params).executeUpdate();} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:查询(通用集合) * @param sql 执行的SQL语句 * @return 持久化后的查询结果 * @throws DataBaseException */public static DataTable executeReader(String sql) throws DataBaseException { try { ResultSet rs=DataBaseClass.createSqlCommand().executeQuery(sql);return new DataTable(rs);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:查询(通用集合) * @param sql 执行的SQL语句 * @param params 执行SQL语句所需的参数 * @return 持久化后的查询结果 * @throws DataBaseException */public static DataTable executeReader(String sql,Object[] params) throws DataBaseException { try { ResultSet rs=DataBaseClass.createSqlCommand(sql, params).executeQuery();return new DataTable(rs);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:查询(类的反射) * @param sql 执行的SQL语句 * @param className 持久化反射类 * @return 持久化后的查询结果 * @throws DataBaseException */public static List<Object> executeQuery(String sql,String className) throws DataBaseException { try { ResultSet rs=DataBaseClass.createSqlCommand().executeQuery(sql);return Persistence.loadResultToSet(rs, className);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:查询(类的反射) * @param sql 执行的SQL语句 * @param params 执行SQL语句所需的参数 * @param className 持久化反射类 * @return 持久化后的查询结果 * @throws DataBaseException */public static List<Object> executeQuery(String sql,Object[] params,String className) throws DataBaseException { try { ResultSet rs=DataBaseClass.createSqlCommand(sql, params).executeQuery();return Persistence.loadResultToSet(rs, className);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:查询(函数回调) * @param sql 执行的SQL语句 * @param handle 持久化操作类 * @return 持久化后的查询结果 * @throws DataBaseException */public static List<Object> executeQuery(String sql,DataBaseListener handle) throws DataBaseException { try { ResultSet rs=DataBaseClass.createSqlCommand().executeQuery(sql);return handle.entity(rs);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 执行数据库操作:查询(函数回调) * @param sql 执行的SQL语句 * @param params 执行SQL语句所需的参数 * @param handle 持久化操作类 * @return 持久化后的查询结果 * @throws DataBaseException */public static List<Object> executeQuery(String sql,Object[] params,DataBaseListener handle) throws DataBaseException { try { ResultSet rs=DataBaseClass.createSqlCommand(sql, params).executeQuery();return handle.entity(rs);} catch (DataBaseException e) { throw e;} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { DataBaseClass.closeConnection();}}/** * 关闭数据库连接 * @param conn 数据库的连接 * @throws DataBaseException */private static void closeConnection() throws DataBaseException { Connection conn=(Connection)DataBaseClass.THREAD_LOCAL.get();try { //5.关闭数据库连接。if (conn!=null && !conn.isClosed()) { if (conn.getAutoCommit()) {conn.close();DataBaseClass.THREAD_LOCAL.set(null);System.out.println("数据库连接已关闭");}}} catch (SQLException e) { throw new DataBaseException("执行数据库操作失败!Error:"+e.getMessage());//System.err.println("关闭数据库连接失败!Error:"+e.getMessage());//e.printStackTrace();}}}DataBaseException类
package com.lbf.database;import java.sql.SQLException;/** * 数据库访问异常类 * @author Wing.King */public class DataBaseException extends SQLException {/** * */private static final long serialVersionUID = -53992627346981792L;public DataBaseException() {super();}public DataBaseException(String message) {super(message);}}
DataBaseListener类
package com.lbf.database;import java.sql.*;import java.util.*;/** * 数据持久化接口 * @author Wing.King */public interface DataBaseListener { /** * 数据持久化函数 * @param rs 查询结果集 * @return 持久化的数据 */public List<Object> entity(ResultSet rs) throws SQLException;}DataTable类
package com.lbf.database;import java.sql.*;import java.util.*;/** * 持久化数据库表 * @author Wing.King */public class DataTable { private ArrayList<String> columnList=new ArrayList<String>();//保存表的列名private ArrayList<ArrayList<Object>> dataList=new ArrayList<ArrayList<Object>>();//表的内容(每一行数据)public DataTable(ResultSet rs) throws SQLException { ResultSetMetaData rsmd=rs.getMetaData();//获取查询结果集的结构for (int i=1;i<=rsmd.getColumnCount();i++) { this.columnList.add(rsmd.getColumnName(i));}while(rs.next()) { ArrayList<Object> row=new ArrayList<Object>();for (int i=1;i<=rsmd.getColumnCount();i++) { row.add(rs.getObject(i));}this.dataList.add(row);}}/** * 获取查询结果首行首列值 * @return Object数值 */public Object getFirstValue() { return this.dataList.get(0).get(0);}/** * 获取查询结果任意一行一列的值 * @param row 行的索引 * @param col 列的索引 * @return Object数值 */public Object getValue(int row,int col) { return this.dataList.get(row).get(col);}/** * 获取查询结果行的数量 * @return int行数 */public int getRowCount() { return this.dataList.size();}/** * 获取查询结果列的数量 * @return int列数 */public int getColumnCount() { return this.columnList.size();}/** * 获取查询结果列的名称 * @param index 列索引 * @return String列名 */public String getColumnName(int index) { return this.columnList.get(index);}}Persistence类
package com.guigu.macheng.database.core;import java.sql.*;import java.util.*;import java.lang.reflect.*;import com.guigu.macheng.database.core.map.*;/** * 持久化处理类(反射处理) * @author Wing.King */public class Persistence { public static ArrayList<Object> loadResultToSet(ResultSet rs,String className) throws SQLException { Class<?> demo = null; ArrayList<MappingData> mapList=new ArrayList<MappingData>(); //========================================================================= try { demo = Class.forName(className); Field[] field=demo.getDeclaredFields(); for (int i=0;i<field.length;i++) { MappingData map=new MappingData(); map.getMappingClass().setName(field[i].getName()); map.getMappingClass().setType(field[i].getType().getName()); mapList.add(map); } } catch (Exception e) { e.printStackTrace(); } //========================================================================= ResultSetMetaData rsmd=rs.getMetaData();//获取结果集的结构 for (int i=1;i<=rsmd.getColumnCount();i++) { String name=rsmd.getColumnName(i); String type=rsmd.getColumnTypeName(i); for (int j=0;j<mapList.size();j++) { if (mapList.get(j).getMappingClass().getName().equalsIgnoreCase(name)) { mapList.get(j).getMappingTable().setName(name); mapList.get(j).getMappingTable().setType(type); break; } } } //========================================================================= ArrayList<Object> dataSet=new ArrayList<Object>(); try { while(rs.next()) { Class<?> temp = Class.forName(className); Object obj = temp.newInstance(); for (int i=0;i<mapList.size();i++) { String name=mapList.get(i).getMappingClass().getName(); String type=mapList.get(i).getMappingClass().getType(); if(mapList.get(i).getMappingClass().getName().equalsIgnoreCase(mapList.get(i).getMappingTable().getName())){ Object value=rs.getObject(mapList.get(i).getMappingTable().getName()); Persistence.setter(obj,name,value,Class.forName(type)); } } dataSet.add(obj); } } catch(Exception e) { dataSet=null; e.printStackTrace(); } return dataSet; } /** * 执行实体Bean的get方法 * @param obj 操作的对象 * @param att 操作的属性 */ public static void getter(Object obj, String att) { try { att=att.replaceFirst(att.substring(0,1),att.substring(0,1).toUpperCase()); Method method=obj.getClass().getMethod("get"+att); System.out.println(method.invoke(obj)); } catch (Exception e) { e.printStackTrace(); } } /** * 执行实体Bean的set方法 * @param obj 操作的对象 * @param att 操作的属性 * @param value 设置的值 * @param type 参数的属性 */ public static void setter(Object obj, String att, Object value, Class<?> type) { try { att=att.replaceFirst(att.substring(0,1),att.substring(0,1).toUpperCase()); Method method=obj.getClass().getMethod("set"+att,type); String[] strList=type.toString().split("\\."); String strType=strList[strList.length-1]; if(strType.equals("Long")) { method.invoke(obj,Long.parseLong(value.toString())); } else if(strType.equals("Integer")) { method.invoke(obj,Integer.parseInt(value.toString())); } else if(strType.equals("Float")) { method.invoke(obj,Float.parseFloat(value.toString())); } else if(strType.equals("Double")) { method.invoke(obj,Double.parseDouble(value.toString())); } else { method.invoke(obj,value); } } catch (Exception e) { e.printStackTrace(); } }}
PropertiesReader类
package com.lbf.database;import java.io.*;import java.util.*;/** * 数据库配置文件读取类 * @author Wing.King */class PropertiesReader { /** * 构造函数:关联对象。每创建一个类的实例是会被系统自动调用(new创建对象时)。 * 私有构造函数,用于说明该类在类的外部不能被实例化 */private PropertiesReader() { //}/** * 返回数据库连接字符串的数据 * @param KeyName连接名称(driver:数据库驱动;dataBase:数据库连接;userName:用户名称;passWord:用户密码;) * @return 连接内容 */public static String getConnectionKey(String keyName) { String keyValue="";InputStream inputStream = null;try { //读取config.properties文本文件的内容,将其保存到inputStream对象中inputStream = PropertiesReader.class.getClassLoader().getResourceAsStream("config.properties");//文件的读取对象,类似FileReader//创建操作config.properties配置文件的对象Properties format=new Properties();//文件的读取格式,类似BufferedReader//将文件的内容和操作文件的对象相关联format.load(inputStream);//将文件读取和文件读取格式相关联//输入键名,返回对应的键值keyValue=format.getProperty(keyName);//通过键名获取键值} catch (FileNotFoundException e) { System.err.println("数据库配置文件“config.properties”,不存在!");e.printStackTrace();} catch (IOException e) { System.err.println("数据库配置文件“config.properties”,读取失败!");e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return keyValue;}/** * @param args */public static void main(String[] args) { System.out.println(PropertiesReader.getConnectionKey("driver"));}}
TransactionProxy类
package com.lbf.database;import java.lang.reflect.*;/** * 数据库操作:事务代理 * @author macheng */public class TransactionProxy implements InvocationHandler { private Object action;//这个就是我们要代理的真实对象 /** * 获取代理对象 * @param className 被代理对象的类名 * @param isProxy 是否返回代理对象(true代理对象,false源对象) * @return 代理对象|源对象 * @throws Throwable */public static Object getInstance(String className,boolean isProxy) throws DataBaseException { if (isProxy) { try {return TransactionProxy.getInstance(Class.forName(className).newInstance());} catch (InstantiationException e) {throw new DataBaseException("获取事务代理对象失败!Error:"+e.getMessage());//e.printStackTrace();} catch (IllegalAccessException e) {throw new DataBaseException("获取事务代理对象失败!Error:"+e.getMessage());//e.printStackTrace();} catch (ClassNotFoundException e) {throw new DataBaseException("获取事务代理对象失败!Error:"+e.getMessage());//e.printStackTrace();}} else { try {return Class.forName(className).newInstance();} catch (InstantiationException e) {throw new DataBaseException("获取业务的源对象失败!Error:"+e.getMessage());//e.printStackTrace();} catch (IllegalAccessException e) {throw new DataBaseException("获取业务的源对象失败!Error:"+e.getMessage());//e.printStackTrace();} catch (ClassNotFoundException e) {throw new DataBaseException("获取业务的源对象失败!Error:"+e.getMessage());//e.printStackTrace();}}} /** * 获取代理对象 * @param className 被代理对象的类名 * @return 代理对象 * @throws Throwable */public static Object getInstance(String className) throws DataBaseException { return TransactionProxy.getInstance(className, true);} /** * 获取代理对象 * @param action 被代理对象 * @return */public static Object getInstance(Object action) throws DataBaseException { /* * 通过Proxy的newProxyInstance方法来创建我们的代理对象,我们来看看其三个参数。 * 第一个参数 handler.getClass().getClassLoader(),我们这里使用handler这个类的ClassLoader对象来加载我们的代理对象。 * 第二个参数realSubject.getClass().getInterfaces(),我们这里为代理对象提供的接口是真实对象所实行的接口,表示我要代理的是该真实对象,这样我就能调用这组接口中的方法了。 * 第三个参数handler,我们这里将这个代理对象关联到了上方的 InvocationHandler 这个对象上。 *///创建一个动态的代理对象//loader:一个ClassLoader对象,定义了由哪个ClassLoader对象来对生成的代理对象进行加载。//interfaces:一个Interface对象的数组,表示的是我将要给我需要代理的对象提供一组什么接口,如果我提供了一组接口给它,那么这个代理对象就宣称实现了该接口(多态),这样我就能调用这组接口中的方法了。//h:一个InvocationHandler对象,表示的是当我这个动态代理对象在调用方法的时候,会关联到哪一个InvocationHandler对象上。try {Object proxy=Proxy.newProxyInstance(action.getClass().getClassLoader(),//取得当前对象所属的Class对象后,在获取该Class对象的类装载器。action.getClass().getInterfaces(), //获取当前对象的实现接口Class对象数组。new TransactionProxy(action) //创建代理类的实例,并和被代理类关联。); return proxy;} catch (Throwable e) {throw new DataBaseException("创建事务代理对象失败!Error:"+e.getMessage());//e.printStackTrace();}} /** * 构造方法:给我们要代理的真实对象赋初值 * @param action 被代理的对象 */ private TransactionProxy(Object action) { this.action=action; } /** * 执行函数的返回结果 * @param proxy 指代我们所代理的那个真实对象 * @param method 指代的是我们所要调用真实对象的某个方法的Method对象 * @param args 指代的是调用真实对象某个方法时接受的参数 * @return * @throws Throwable */public Object invoke(Object proxy, Method method, Object[] args) throws DataBaseException { try { //在代理真实对象前我们可以添加一些自己的操作 this.doBefore();//代理前动作 //当代理对象调用真实对象的方法时,其会自动的跳转到代理对象关联的handler对象的invoke方法来进行调用 Object object = method.invoke(action, args);//System.out.println("Method:" + method);DataBaseClass.commit();return object;} catch (Throwable e) {DataBaseClass.rollback();throw new DataBaseException("执行事务代理操作失败!Error:"+e.getMessage());//e.printStackTrace();} finally { //在代理真实对象后我们也可以添加一些自己的操作 this.doAfter();//代理后动作} }/** * 代理前动作 * @throws Throwable */public void doBefore() throws DataBaseException { DataBaseClass.beginTransaction();//System.out.println("开始事务...");//代理前动作}/** * 代理后动作 * @throws Throwable */public void doAfter() throws DataBaseException { //DataBaseClass类事务提交或事务回滚后自动结束事务//System.out.println("结束事务...");//代理后动作}}
MappingClass类
package com.lbf.database.map;import java.io.Serializable;/** * 数据映射类(类) */public class MappingClass implements Serializable { /** * */private static final long serialVersionUID = 5374376991148428908L;private String name=null;private String type=null;public MappingClass() { this("","");}public MappingClass(String name,String type) { this.name=name;this.type=type;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getType() { return type;}public void setType(String type) { this.type = type;}@Overridepublic String toString() { return "Class:"+name+"-"+type;}}
MappingData类
package com.lbf.database.map;import java.io.Serializable;/** * 数据映射类(类和表关联) */public class MappingData implements Serializable { /** * */private static final long serialVersionUID = 5051257007902027488L;private MappingClass mappingClass=null;private MappingTable mappingTable=null;public MappingData() { this(new MappingClass(),new MappingTable());}public MappingData(MappingClass mappingClass,MappingTable mappingTable) { this.mappingClass=mappingClass;this.mappingTable=mappingTable;}public MappingClass getMappingClass() { return mappingClass;}public void setMappingClass(MappingClass mappingClass) { this.mappingClass = mappingClass;}public MappingTable getMappingTable() { return mappingTable;}public void setMappingTable(MappingTable mappingTable) { this.mappingTable = mappingTable;}@Overridepublic String toString() { return mappingClass.toString()+"="+mappingTable.toString();}}
MappingTable类
package com.lbf.database.map;import java.io.Serializable;/** * 数据映射类(表) */public class MappingTable implements Serializable { /** * */private static final long serialVersionUID = -1864473153906695987L;private String name=null;private String type=null;public MappingTable() { this("","");}public MappingTable(String name,String type) { this.name=name;this.type=type;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getType() { return type;}public void setType(String type) { this.type = type;}@Overridepublic String toString() { return "Table:"+name+"-"+type;}}
0 0
- 数据库工具类(二)
- 数据库组件 Hxj.Data (二)(实体生成工具)
- SQL数据库通用数据导出工具(二)
- JAVA工具类(二)
- 日志工具类(二)
- lua工具类(二)
- 日期工具类(二)
- 日期工具类(二)
- 数据库工具类(UserDao)
- 性能测试工具二(数据库性能分析与诊断工具 tell the bees)
- 第七章 业务数据库的管理(二)-- 数据库客户端工具
- 【压力测试二】数据库压力测试工具
- JavaWeb之JDBC(二)采用读取配置文件方式编写JDBC的工具类,获取数据库的连接
- 工具(二):数组常用操作工具类
- java工具类系列 (二.StopWatch)
- 线程安全(二)-同步工具类
- JAVA通用工具类(二)
- JDBC入门(二)工具类封装
- demon日常的刷题——贪心(c++版本)
- Android技巧2:登录注册模块解决方案
- 常用字符串处理函数
- 加密术
- switch中能用哪些类型jdk1.7及以上
- 数据库工具类(二)
- ubuntu学习2——window通过winsshd与ubuntu互传文件
- Linux学习40_没有正确安装GNOME电源管理器的默认配置
- Lisp 的本质(2)
- Java stream 文件和IO
- Mudahbet Casino Malaysia weekly Lucky Draw(lucky draw promotion, mudahbet, mudahbet casino malaysia,
- linux-which
- 自己制作静态和动态链接库并使用
- 小学数学