java 根据表名自动生成增,删,改,查程序代码, 包括Dao接口类,Dao实现类(二)

接上一节内容,

自动生成的 IInterfaceIdMappingService 接口文件

package com.wasion.ems.commons.archive.service;


import java.io.Serializable;
import java.util.*;

import com.test.InterfaceIdMapping;
import com.test.SupDto;
import com.test.IBaseService;
import com.test.IBatchService;

/** 
 * INTERFACE_ID_MAPPING
 * @author table tool 2019-05-23
 */
public interface IInterfaceIdMappingService extends IBaseService<InterfaceIdMapping, SupDto>, IBatchService<InterfaceIdMapping, SupDto> {

	//demo: public abstract List<InterfaceIdMapping> findAll(String sqlExpression, SupDto p);
}

 IInterfaceIdMappingDao.java 接口文件:

package com.test;


import java.io.Serializable;
import java.util.*;

import com.test.SupDto;
import com.test.InterfaceIdMapping;
import com.test.IBaseDao;
import com.test.IBatchDao;

/** 
 * INTERFACE_ID_MAPPING
 * @author table tool 2019-05-23
 */
public interface IInterfaceIdMappingDao extends IBaseDao<InterfaceIdMapping, SupDto>, IBatchDao<InterfaceIdMapping, SupDto> {

	//demo: public abstract List<InterfaceIdMapping> findAll(String sqlExpression, SupDto p);
}

 

InterfaceIdMappingServicePojoImpl.java 服务实现文件:

package com.test;


import java.io.Serializable;
import java.util.*;

import com.test.IInterfaceIdMappingDao;
import com.test.InterfaceIdMapping;
import com.test.IInterfaceIdMappingService;
import com.test.SupDto;


/** 
 * INTERFACE_ID_MAPPING
 * @author table tool 2019-05-23
 */
public class InterfaceIdMappingServicePojoImpl implements IInterfaceIdMappingService {

	private IInterfaceIdMappingDao dao;

	/** spring in */
	public IInterfaceIdMappingDao getDao() {
		return dao;
	}
	public void setDao(IInterfaceIdMappingDao dao) {
		this.dao = dao;
	}

	public InterfaceIdMapping create(InterfaceIdMapping entity, SupDto p) {
		return this.dao.create(entity, p);
	}
	public boolean delete(InterfaceIdMapping entity, SupDto p) {
		return this.dao.delete(entity, p);
	}
	public InterfaceIdMapping read(InterfaceIdMapping entity, SupDto p) {
		return this.dao.read(entity, p);
	}
	public boolean update(InterfaceIdMapping entity, SupDto p) {
		return this.dao.update(entity, p);
	}
	public List<InterfaceIdMapping> findAll(String sqlExpression, SupDto p) {
		return this.dao.findAll(sqlExpression, p);
	}

	public boolean createBatch(List<InterfaceIdMapping> entities, SupDto p) {
		return this.dao.createBatch(entities, p);
	}
	public boolean deleteBatch(List<InterfaceIdMapping> entities, SupDto p) {
		return this.dao.deleteBatch(entities, p);
	}
	public boolean updateBatch(List<InterfaceIdMapping> entities, SupDto p) {
		return this.dao.updateBatch(entities, p);
	}
	public boolean updateOrInsertBatch(List<InterfaceIdMapping> entities, SupDto p) {
		return this.dao.updateOrInsertBatch(entities, p);
	}
}

 

InterfaceIdMappingDaoJdbcImpl.java 接口dao实现文件:

package com.wasion.ems.commons.archive.dao.jdbc;


import java.util.*;
import java.math.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.test.SupDto;
import com.test.JdbcDataUtils;
import com.test.SqlCacheUnits;
import com.test.SqlStringUnits;
import com.test.IInterfaceIdMappingDao;
import com.test.InterfaceIdMapping;
import com.test.BaseMdbDaoSupport;


/** 
 * INTERFACE_ID_MAPPING
 * @author table tool 2019-05-23
 */
public class InterfaceIdMappingDaoJdbcImpl extends BaseMdbDaoSupport implements IInterfaceIdMappingDao {
	private Log logger = LogFactory.getLog(this.getClass());
	private SqlStringUnits stool = new SqlStringUnits();
	private JdbcDataUtils jtool = new JdbcDataUtils();
	private String table = "INTERFACE_ID_MAPPING";
	private String name = "INTERFACE_ID_MAPPING";
	private final int BATCH_SIZE=500;

	/** findAll row */
	public List<InterfaceIdMapping> findAll(String sqlExpression, SupDto p) {
		if(sqlExpression == null) return null;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" SELECT "+this.getColumnString()+" FROM "+ tablename+" "+sqlExpression;
		return this.getJdbcDaoSupport(p).query(strSql, InterfaceIdMapping.class, sqlNote);
	}

	/** read row */
	public InterfaceIdMapping read(InterfaceIdMapping entity, SupDto p) {
		if(entity == null) return null;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" SELECT "+this.getColumnString()+" FROM "+tablename
				+" WHERE OTHER_ID ="+stool.toString(entity.getOTHER_ID())
				+" AND OBJECT_TYPE = "+entity.getOBJECT_TYPE()
				+" AND DATA_FROM = "+entity.getDATA_FROM();
		//TODO ADD WHERE CODE......
		return this.getJdbcDaoSupport(p).querySingle(strSql, InterfaceIdMapping.class, sqlNote);
	}

	/** create row */
	public InterfaceIdMapping create(InterfaceIdMapping entity, SupDto p) {
		if(entity == null) return null;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" INSERT INTO "+ tablename +" ("+this.getColumnString()+") "+
			" VALUES(?,?,?,?,?,?,?,?)";
		int rs = this.getJdbcDaoSupport(p).update(strSql, this.processInsertParm(entity), sqlNote);
		return rs >0 ? entity : null;
	}

	/** delete row */
	public boolean delete(InterfaceIdMapping entity, SupDto p) {
		if(entity == null) return false;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" DELETE "+ tablename +
				" WHERE OTHER_ID ="+stool.toString(entity.getOTHER_ID()) +
				" AND OBJECT_TYPE = "+entity.getOBJECT_TYPE() +
				" AND DATA_FROM = "+entity.getDATA_FROM();
		//TODO ADD WHERE CODE......
		int rs = this.getJdbcDaoSupport(p).update(strSql, sqlNote);
		return rs >= 0 ? true : false;
	}

	/** update row */
	public boolean update(InterfaceIdMapping entity, SupDto p) {
		if(entity == null) return false;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" UPDATE "+ tablename +" SET"+
			" OTHER_ID=?,OBJECT_TYPE=?,DATA_FROM=?,OBJECT_ID=?,OBJECT_NO=?,OBJECT_CODE=?,OBJECT_NAME=?,MEMO=?"+
			" WHERE OTHER_ID=? AND OBJECT_TYPE=? AND DATA_FROM=? ";
		//TODO ADD WHERE CODE......
		int rs = this.getJdbcDaoSupport(p).update(strSql, this.processUpdateParm(entity), sqlNote);
		return rs >= 0 ? true : false;
	}

	/** createBatch row */
	public boolean createBatch(List<InterfaceIdMapping> entities, SupDto p) {
		if(entities == null || entities.size()==0) return true;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" INSERT INTO "+ tablename +" ("+this.getColumnString()+") "+
			" VALUES(?,?,?,?,?,?,?,?)";
		boolean bResult = false;
		List<Object[]> args = new ArrayList<Object[]>();
		int len = entities.size();
		int i = 0;
		for(InterfaceIdMapping e : entities){
			args.add( processInsertParm(e) );
			i++;
			if ((i % BATCH_SIZE == 0) || i == len) {
				int[] rs = this.getJdbcDaoSupport(p).batchUpdate(strSql, args, sqlNote);
				args.clear();
				if(logger.isDebugEnabled()){
					logger.debug("[正在批量提交数据]: "+i+"/"+len+", BY "+name);
				}
				if(rs == null){	bResult = false; break; }
				else{ bResult = true; }
			}
		}
		logger.info("[完成批量提交数据]: "+i+"/"+len+", BY "+name);
		return bResult;
	}

	/** deleteBatch row */
	public boolean deleteBatch(List<InterfaceIdMapping> entities, SupDto p) {
		if(entities == null || entities.size()==0) return true;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" DELETE "+ tablename +" WHERE OTHER_ID=? AND OBJECT_TYPE=? AND DATA_FROM=? ";
		//TODO ADD WHERE CODE......
		boolean bResult = false;
		List<Object[]> args = new ArrayList<Object[]>();
		int len = entities.size();
		int i = 0;
		for(InterfaceIdMapping e : entities){
			args.add( processDeleteParm(e) );
			i++;
			if ((i % BATCH_SIZE == 0) || i == len) {
				int[] rs = this.getJdbcDaoSupport(p).batchUpdate(strSql, args, sqlNote);
				args.clear();
				if(logger.isDebugEnabled()){
					logger.debug("[正在批量提交数据]: "+i+"/"+len+", BY "+name);
				}
				if(rs == null){	bResult = false; break; }
				else{ bResult = true; }
			}
		}
		logger.info("[完成批量提交数据]: "+i+"/"+len+", BY "+name);
		return bResult;
	}

	/** updateBatch row */
	public boolean updateBatch(List<InterfaceIdMapping> entities, SupDto p) {
		if(entities == null || entities.size()==0) return true;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String strSql = null;
		strSql =" UPDATE "+ tablename +" SET"+
			" OTHER_ID=?,OBJECT_TYPE=?,DATA_FROM=?,OBJECT_ID=?,OBJECT_NO=?,OBJECT_CODE=?,OBJECT_NAME=?,MEMO=?"+
			" WHERE OTHER_ID=? AND OBJECT_TYPE=? AND DATA_FROM=? ";
		//TODO ADD WHERE CODE......
		boolean bResult = false;
		List<Object[]> args = new ArrayList<Object[]>();
		int len = entities.size();
		int i = 0;
		for(InterfaceIdMapping e : entities){
			args.add( processUpdateParm(e) );
			i++;
			if ((i % BATCH_SIZE == 0) || i == len) {
				int[] rs = this.getJdbcDaoSupport(p).batchUpdate(strSql, args, sqlNote);
				args.clear();
				if(logger.isDebugEnabled()){
					logger.debug("[正在批量提交数据]: "+i+"/"+len+", BY "+name);
				}
				if(rs == null){	bResult = false; break; }
				else{ bResult = true; }
			}
		}
		logger.info("[完成批量提交数据]: "+i+"/"+len+", BY "+name);
		return bResult;
	}

	/** updateOrInsertBatch row */
	public boolean updateOrInsertBatch(List<InterfaceIdMapping> entities, SupDto p) {
		if(entities==null || entities.size()==0) return true;
		String tablename = this.getTableName(p, this.table);
		String sqlNote = this.getSqlNote(p, this.name);
		String sqlUp = null;
		String sqlIn = null;
		sqlIn =" INSERT INTO "+ tablename +" ("+
			" OBJECT_ID,OBJECT_NO,OBJECT_CODE,OBJECT_NAME,MEMO, OTHER_ID,OBJECT_TYPE,DATA_FROM) "+
			" VALUES(?,?,?,?,?,?,?,?)";
		sqlUp =" UPDATE "+ tablename +" SET"+
			" OTHER_ID=?,OBJECT_TYPE=?,DATA_FROM=?,OBJECT_ID=?,OBJECT_NO=?,OBJECT_CODE=?,OBJECT_NAME=?,MEMO=?"+
			" WHERE OTHER_ID=? AND OBJECT_TYPE=? AND DATA_FROM=? ";
		//TODO ADD WHERE CODE......
		boolean bResult = false;
		List<Object[]> args = new ArrayList<Object[]>();
		int len = entities.size();
		int i = 0;
		for(InterfaceIdMapping e : entities){
			args.add( processUpdateOrInsertParm(e) );
			i++;
			if ((i % BATCH_SIZE == 0) || i == len) {
				bResult = this.getJdbcDaoSupport(p).batchUpdateOrInsert(sqlUp, sqlIn, args, sqlNote);
				args.clear();
				if(logger.isDebugEnabled()){
					logger.debug("[正在批量提交数据]: "+i+"/"+len+", BY "+name);
				}
				if(! bResult){ break; }
			}
		}
		logger.info("[完成批量提交数据]: "+i+"/"+len+", BY "+name);
		return bResult;
	}


	//-------------------------Parameters CODE------------------------- 


	/** Insert parameters */
	protected Object[] processInsertParm(InterfaceIdMapping e) {
		Object[] parameters = new Object[]{
			e.getOTHER_ID(), e.getOBJECT_TYPE(), e.getDATA_FROM(), e.getOBJECT_ID(), e.getOBJECT_NO(), 
			e.getOBJECT_CODE(), e.getOBJECT_NAME(), e.getMEMO() };
		return parameters;
	}

	/** Insert parameters */
	protected Object[] processDeleteParm(InterfaceIdMapping e) {
		Object[] parameters = new Object[]{
				e.getOTHER_ID(), e.getOBJECT_TYPE(), e.getDATA_FROM()
			};
		return parameters;
	}

	/** Insert parameters */
	protected Object[] processUpdateParm(InterfaceIdMapping e) {
		Object[] parameters = new Object[]{
			e.getOTHER_ID(), e.getOBJECT_TYPE(), e.getDATA_FROM(), e.getOBJECT_ID(), e.getOBJECT_NO(), 
			e.getOBJECT_CODE(), e.getOBJECT_NAME(), e.getMEMO(),
			//TODO ADD WHERE CODE......
			e.getOTHER_ID(), e.getOBJECT_TYPE(), e.getDATA_FROM()
			};
		return parameters;
	}

	/** Insert parameters */
	protected Object[] processUpdateOrInsertParm(InterfaceIdMapping e) {
		Object[] parameters = new Object[]{
			e.getOBJECT_ID(), e.getOBJECT_NO(), 
			e.getOBJECT_CODE(), e.getOBJECT_NAME(), e.getMEMO(),
			//TODO ADD WHERE CODE......
			e.getOTHER_ID(), e.getOBJECT_TYPE(), e.getDATA_FROM()
			};
		return parameters;
	}

	/** 8 Column */
	protected String getColumnString() {
		String sqlSql =" OTHER_ID,OBJECT_TYPE,DATA_FROM,OBJECT_ID,OBJECT_NO,OBJECT_CODE,OBJECT_NAME,MEMO ";
		return sqlSql;
	}

}

 

代码里有用到 IBatchDao 公用接口, IBaseDao接口 IBaseService接口, IBatchService 接口

附公用dao接口文件:

IBaseDao.java 

package com.test;

import java.io.Serializable;
import java.util.List;

/**
 * 基本数据操作接口
 * @author guishuanglin 2007-11-17
 * @param <T> entity
 * @param <P> parameter, Table name or table type or time type or other object
 */
public interface IBaseDao<T, P extends Serializable> extends IDao {
	
	/**
     * create
     * @param t
     */
    public T create(T t, P p);

    /**
     * delete by T
     * @param t
     */
    public boolean delete(T t, P p);

    /**
     * update
     * @param t
     */
    public boolean update(T t, P p);
    
    /**
     * read by PK
     * @param t
     * @return
     */
    public T read(T t, P p);
    
    /**
     * find all
     * @param sqlExpression, where,order by,group by....
     * @return
     */
    public List<T> findAll(String sqlExpression, P p);
    
}

IBatchDao.java

package com.test;

import java.io.Serializable;
import java.util.*;

/**
 * Batch 批量操作服务
 * @author guishuanglin 2007-11-17
 * @param <T> entity
 * @param <P> parameter, Table name or table type or time type or other object
 */
public interface IBatchService <T,P extends Serializable> extends IService {
    /**
     * create by List<T>
     * @param entities
     */
    public boolean createBatch(List<T> entities, P p);

    /**
     * delete by List<T>
     * @param entities
     */
    public boolean deleteBatch(List<T> entities, P p);
    
    /**
     * update by List<T>
     * @param entities
     */
    public boolean updateBatch(List<T> entities, P p);
    
    /**
     * updateOrInsertBatch by List<T>
     * @param entities
     * @param p
     */
    public boolean updateOrInsertBatch(List<T> entities, P p);
 
}

说明:  IBaseDao 与 IBaseService接口内容相同, IBatchDao 与IBatchService 相同, 只是为了分层.

BaseMdbDaoSupport 可以用spring原生 JdbcDaoSupport 代替, 可能有些方法没有, 但是差不多.

SupDto 是上下文对象, 比如查询数据的云服务器名称, 或者数据源名称, 因为在分库系统, 云库系统数据存在不同的数据库.

另外在 SupDto 也包含了分页对象 PageDto 的参数.

JdbcDataUtils; SqlStringUnits; 这三个只是转换工具, 自己可以修改代码不使用它

SqlCacheUnits; 是为了缓存最近1000条 sql语句, 方便显示给后台维护人员的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于Android Java实现的简单的DAO对SQLite数据库进行操作的封装的源码示例: ```java public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "my_db"; private static final int DB_VERSION = 1; private static final String TABLE_NAME = "my_table"; private static final String COLUMN_ID = "_id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_AGE = "age"; public MyDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME + " TEXT," + COLUMN_AGE + " INTEGER);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Upgrade database schema } } public class MyDao { private MyDatabaseHelper dbHelper; public MyDao(Context context) { dbHelper = new MyDatabaseHelper(context); } public long insert(String name, int age) { SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(MyDatabaseHelper.COLUMN_NAME, name); values.put(MyDatabaseHelper.COLUMN_AGE, age); long id = db.insert(MyDatabaseHelper.TABLE_NAME, null, values); db.close(); return id; } public boolean update(int id, String name, int age) { SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(MyDatabaseHelper.COLUMN_NAME, name); values.put(MyDatabaseHelper.COLUMN_AGE, age); int rows = db.update(MyDatabaseHelper.TABLE_NAME, values, MyDatabaseHelper.COLUMN_ID + "=?", new String[]{String.valueOf(id)}); db.close(); return rows > 0; } public boolean delete(int id) { SQLiteDatabase db = dbHelper.getWritableDatabase(); int rows = db.delete(MyDatabaseHelper.TABLE_NAME, MyDatabaseHelper.COLUMN_ID + "=?", new String[]{String.valueOf(id)}); db.close(); return rows > 0; } public Cursor queryAll() { SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query(MyDatabaseHelper.TABLE_NAME, null, null, null, null, null, null); return cursor; } } ``` 在这个示例中,我们先创建了一个`MyDatabaseHelper`,它继承自`SQLiteOpenHelper`,用于创建和升级数据库。然后我们创建了一个`MyDao`,它用于对`MyDatabaseHelper`创建的数据库进行操作的封装。在`MyDao`中,我们实现了以下方法: - `insert`方法用于向数据库中插入一条记录; - `update`方法用于更新数据库中的一条记录; - `delete`方法用于从数据库中除一条记录; - `queryAll`方法用于询数据库中的所有记录。 这些方法中,我们都使用了`SQLiteDatabase`的方法来实现对数据库的操作。在每个方法中,我们都会获取一个可写或可读的数据库对象,执行相应的操作,并在操作完成后关闭数据库连接。 注意,在使用`Cursor`对象询数据库的时候,需要在使用完毕后将其关闭,以释放资源,避免内存泄漏。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值