Clean code在Android开发中的应用,让你写的代码更高效

10 篇文章 0 订阅
4 篇文章 0 订阅

下面是直接使用SQL语句根据id查询Android SQLite数据库的例子.  

需要自己写sql语句, 自己手动获取结果并装成目标Javabean.

	public Tb_outaccount find(int id) {
//		db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
		
		Cursor cursor = dbRead
				.rawQuery(
						"select _id,money,time,type,address,mark from tb_outaccount where _id = ?",
						new String[] { String.valueOf(id) });// 根据编号查找支出信息,并存储到Cursor类中
		
//		int ColumnCount=cursor.getColumnCount();
//		String ColumnNames[]=cursor.getColumnNames();
		
		if (cursor.moveToNext())// 遍历查找到的支出信息
		{
			// 将遍历到的支出信息存储到Tb_outaccount类中
			return new Tb_outaccount(
					cursor.getInt(cursor.getColumnIndex("_id")),
					cursor.getDouble(cursor.getColumnIndex("money")),
					cursor.getString(cursor.getColumnIndex("time")),
					cursor.getString(cursor.getColumnIndex("type")),
					cursor.getString(cursor.getColumnIndex("address")),
					cursor.getString(cursor.getColumnIndex("mark")));
		}
		return null;// 如果没有信息,则返回null
	}

存在的问题:

以下是使用ORM Bee框架, 重构后, 前后对比的效果代码. 

大大简化了类似重复代码; 提高了编码效率.  不需要每个表都写一遍.

package com.lib.accountsoft.dao;

import java.util.List;

import org.teasoft.bee.osql.FunctionType;
import org.teasoft.bee.osql.MoreTable;
import org.teasoft.bee.osql.SuidRich;
import org.teasoft.honey.osql.shortcut.BF;
import org.teasoft.honey.util.StringUtils;

import com.lib.accountsoft.model.Tb_inaccount;

public class InaccountDAO {
//	private SQLiteDatabase db=DBOpenHelper.getWritableDB();// 创建SQLiteDatabase对象
	
	private SuidRich suidRich=BF.getSuidRich();  //获取SQLiteDatabase,由Bee代劳

	public InaccountDAO() {}

	/**
	 * 添加收入信息
	 * 
	 * @param tb_inaccount
	 */
	public void add(Tb_inaccount tb_inaccount) {
		// 执行添加收入信息操作
//		db.execSQL(
//				"insert into tb_inaccount (_id,money,time,type,handler,mark) values (?,?,?,?,?,?)",
//				new Object[] { tb_inaccount.getid(), tb_inaccount.getMoney(),
//						tb_inaccount.getTime(), tb_inaccount.getType(),
//						tb_inaccount.getHandler(), tb_inaccount.getMark() });
		
		 suidRich.insert(tb_inaccount);
	}

	/**
	 * 更新收入信息
	 * 
	 * @param tb_inaccount
	 */
	public void update(Tb_inaccount tb_inaccount) {
		// 执行修改收入信息操作
//		db.execSQL(
//				"update tb_inaccount set money = ?,time = ?,type = ?,handler = ?,mark = ? where _id = ?",
//				new Object[] { tb_inaccount.getMoney(), tb_inaccount.getTime(),
//						tb_inaccount.getType(), tb_inaccount.getHandler(),
//						tb_inaccount.getMark(), tb_inaccount.getid() });
		
		suidRich.update(tb_inaccount);
	}

	/**
	 * 查找收入信息
	 * 
	 * @param id
	 * @return
	 */
	public Tb_inaccount find(int id) {
		
//		Cursor cursor = db
//				.rawQuery(
//						"select _id,money,time,type,handler,mark from tb_inaccount where _id = ?",
//						new String[] { String.valueOf(id) });// 根据编号查找收入信息,并存储到Cursor类中
//		if (cursor.moveToNext())// 遍历查找到的收入信息
//		{
//			// 将遍历到的收入信息存储到Tb_inaccount类中
//			return new Tb_inaccount(
//					cursor.getInt(cursor.getColumnIndex("_id")),
//					cursor.getDouble(cursor.getColumnIndex("money")),
//					cursor.getString(cursor.getColumnIndex("time")),
//					cursor.getString(cursor.getColumnIndex("type")),
//					cursor.getString(cursor.getColumnIndex("handler")),
//					cursor.getString(cursor.getColumnIndex("mark")));
//		}
//		return null;// 如果没有信息,则返回null
		
		return suidRich.selectById(new Tb_inaccount(), id);
		
	}

	/**
	 * 删除收入信息
	 * 
	 * @param ids
	 */
	public void detele(Integer... ids) {
//		if (ids.length > 0)// 判断是否存在要删除的id
//		{
//			StringBuffer sb = new StringBuffer();// 创建StringBuffer对象
//			for (int i = 0; i < ids.length; i++)// 遍历要删除的id集合
//			{
//				sb.append('?').append(',');// 将删除条件添加到StringBuffer对象中
//			}
//			sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符
			db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
//			// 执行删除收入信息操作
//			db.execSQL("delete from tb_inaccount where _id in (" + sb + ")",
//					(Object[]) ids);
//		}
		

		suidRich.deleteById(Tb_inaccount.class, StringUtils.toCommasString(ids));
		
		
	}

	/**
	 * 获取收入信息
	 * 
	 * @param start
	 *            起始位置
	 * @param size
	 *            每页显示数量
	 * @return
	 */
	public List<Tb_inaccount> getScrollData(int start, int size) {
//		List<Tb_inaccount> tb_inaccount = new ArrayList<Tb_inaccount>();// 创建集合对象
//		// 获取所有收入信息
//		Cursor cursor = db.rawQuery("select * from tb_inaccount limit ?,?",
//				new String[] { String.valueOf(start), String.valueOf(size) });
//		while (cursor.moveToNext())// 遍历所有的收入信息
//		{
//			// 将遍历到的收入信息添加到集合中
//			tb_inaccount.add(new Tb_inaccount(cursor.getInt(cursor
//					.getColumnIndex("_id")), cursor.getDouble(cursor
//					.getColumnIndex("money")), cursor.getString(cursor
//					.getColumnIndex("time")), cursor.getString(cursor
//					.getColumnIndex("type")), cursor.getString(cursor
//					.getColumnIndex("handler")), cursor.getString(cursor
//					.getColumnIndex("mark"))));
//		}
//		return tb_inaccount;// 返回集合
		
		return suidRich.select(new Tb_inaccount(), start, size);
	}

	/**
	 * 获取总记录数
	 * 
	 * @return
	 */
	public long getCount() {
//		Cursor cursor = db
//				.rawQuery("select count(_id) from tb_inaccount", null);// 获取收入信息的记录数
//		if (cursor.moveToNext())// 判断Cursor中是否有数据
//		{
//			return cursor.getLong(0);// 返回总记录数
//		}
//		return 0;// 如果没有数据,则返回0
		
		return suidRich.count(new Tb_inaccount());
	}


}

删除多余代码,  代码整洁高效多了!!

package com.lib.accountsoft.dao;

import java.util.List;

import org.teasoft.bee.osql.SuidRich;
import org.teasoft.honey.osql.shortcut.BF;
import org.teasoft.honey.util.StringUtils;

import com.lib.accountsoft.model.Tb_inaccount;

public class InaccountDAO {
	private SuidRich suidRich=BF.getSuidRich();  //获取SQLiteDatabase,由Bee代劳

	public InaccountDAO() {}

	/**
	 * 添加收入信息
	 * @param tb_inaccount
	 */
	public void add(Tb_inaccount tb_inaccount) {
		 suidRich.insert(tb_inaccount);
	}

	/**
	 * 更新收入信息
	 * @param tb_inaccount
	 */
	public void update(Tb_inaccount tb_inaccount) {
		suidRich.update(tb_inaccount);
	}

	/**
	 * 查找收入信息
	 * @param id
	 * @return
	 */
	public Tb_inaccount find(int id) {
		return suidRich.selectById(new Tb_inaccount(), id);
	}

	/**
	 * 删除收入信息
	 * @param ids
	 */
	public void detele(Integer... ids) {
		suidRich.deleteById(Tb_inaccount.class, StringUtils.toCommasString(ids));
	}

	/**
	 * 获取收入信息
	 * @param start 起始位置
	 * @param size 每页显示数量
	 * @return
	 */
	public List<Tb_inaccount> getScrollData(int start, int size) {
		return suidRich.select(new Tb_inaccount(), start, size);
	}

	/**
	 * 获取总记录数
	 * @return
	 */
	public long getCount() {
		return suidRich.count(new Tb_inaccount());
	}

}

Bee V1.17将全面支持Android环境的数据库操作.

让你学一种ORM框架就可以在JavaWeb和Anddroid两种环境中使用.

-----------------------------------------------------------
 

Bee 是一个简单,易用,功能强大,开发速度快,编码少的 JAVA ORM 框架。连接,事务都可以由Bee框架负责管理. Bee 简化了与DB交互的编码工作量, 是 编码复杂度 为 O(1) 的Java 框架!

Bee简单易用:单表操作、多表关联操作,可以不用写sql,极少语句就可以完成SQL操作;概念简单,10分钟即可入门。
Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化;具有分布式特性。高级要求,还可以方便自定义SQL语句。

码云上的项目首页:

bee: 互联网新时代的Java ORM工具,简单、高效,开发速度快!

bee-springboot: Bee整合Spring Boot,让你瞬间拥有两样快速开发利器!

github:

https://github.com/automvc/bee

相关框架设计信息也可关注微信公众号:软件设计活跃区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值