面向对象数据库框架设计 sql
public void saveUser(User user){ DBHelper dbHelper=new DBHelper(this); SQLiteDatabase db=dbHelper.getWritableDatabase(); db.execSQL("create table if not exists db_user(name,varchar(20),password varchar(10),)"); ContentValues values=new ContentValues(); values.put("name",user.getName()); values.put("password",user.getPassword()); db.beginTransaction(); int scheduleID=-1; try{ db.insert("schedule",null,values); db.setTransactionSuccessful(); }finally{ } db.endTransaction(); db.close(); }
1.调用层不关心数据的建立和在哪里建立
2.关心表的建立
3.不关心sql语句的拼写,对象丢给你,你帮我存入数据库数据库
hashMap<String,String>=getValues(User)
ContentValues values=getContentValues();框架
目录结构this
db--|
db--|---annotion(注解目录)
db--|-------|
db--|-----DbTable
设计
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface DbTable(){ String value(); } @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface DbField{ String value(); } public interface IBaseDao<T>{ Long insert(T entity); Long update(T entity,T where); delete(); select(); } public abstract class BaseDao<T> implements IBaseDao{ private SQLiteDatabase database; protected boolean init(Class<T> entity,SQLiteDatabase sqLiteDatabase){ database=sqLiteDatabase; } public Long insert(T entity){ return null; } public Long update(T entity,T where){ return null; } } public class BaseDaoFactory{ private String sqliteDatabasePath; private SQLiteDatabase sqlLiteDatabase; public BaseDaoFactory(){ sqliteDatabasePath=Enviroment.getDataDirectory().getAbsolutePath()+"user.db"; openDatabase(); } public void openDatabase(){ this.sqLiteDatabase=SQLiteDatabase.openOrCreateDatabase(sqliteDatabasePath,null); } public synchronized<T extends BaseDao<M>,M> T getDataHelper(Class<T> class,Class <M> entityClass ); BaseDao baseDao=null; try{ baseDao=Class.newInstance(); baseDao.init(); }catch(){ } } @DbTable("tb_common_user") public class User{ @DbField("tb_name") public String name; @DbField("tb_password") public String password; }