OrmLite的简单学习(增删改查_两个表)
来源:互联网 发布:Java列表迭代器 编辑:程序博客网 时间:2024/06/06 08:50
参考学习网址:
1.android OrmLite 入门 - ziqiang1的专栏 - CSDN博客 http://blog.csdn.net/ziqiang1/article/details/52121643
2.android OrmLite 实际应用 - ziqiang1的专栏 - CSDN博客 http://blog.csdn.net/ziqiang1/article/details/52131304
3.Android ORMLite 框架的入门用法 - Hongyang - CSDN博客 http://blog.csdn.net/lmj623565791/article/details/39121377
综合学习了这个帖子,大概了解了OrmLite的增删改查。
核心步骤:
1.下载需要的jar包:
OrmLite Releases - Lightweight Object Relational Mapping (ORM) http://ormlite.com/releases/
具体做法根据android OrmLite 入门 - ziqiang1的专栏 - CSDN博客 http://blog.csdn.net/ziqiang1/article/details/52121643
2.具体代码实现根据android OrmLite 实际应用 - ziqiang1的专栏 - CSDN博客 http://blog.csdn.net/ziqiang1/article/details/52131304
以下是我学习别人的贴纸之后的代码
1.布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center|top" android:orientation="vertical"> <EditText android:id="@+id/ed_text" android:hint="请输入id" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp"/> <TextView android:id="@+id/tv_add_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:text="增学生、班级"/> <TextView android:id="@+id/tv_delete_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:text="删学生byId"/> <TextView android:id="@+id/tv_delete_info_class" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:text="删班级byId"/> <TextView android:id="@+id/tv_update_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:text="改学生byId"/> <TextView android:id="@+id/tv_search_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:text="查学生byId"/> <TextView android:id="@+id/tv_search_all_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:text="查所有学生、班级"/> <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_show_result" android:layout_marginTop="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="21sp" android:text="显示操作结果"/> </ScrollView></LinearLayout>
2.BaseDao:
public abstract class BaseDao<T,ID> { private DatabaseHelper helper; public BaseDao(Context context){ helper = DatabaseHelper.getInstance( context); } public DatabaseHelper getHelper(){ return helper; } public abstract Dao<T,ID> getDao(); public int add(T t){ try { return getDao().create( t); }catch ( SQLException e){ e.printStackTrace(); } return -1; } public int addList(List<T> list){ try { return getDao().create( list); }catch ( SQLException e){ e.printStackTrace(); } return -1; } public List<T> getAll(){ List<T> list = new ArrayList<>(); try { list = getDao().queryForAll(); }catch ( SQLException e){ e.printStackTrace(); } return list; } public T get(ID id){ try { return getDao().queryForId( id); }catch ( SQLException e){ e.printStackTrace(); } return null; } public int update(T t){ try { return getDao().update( t); }catch ( SQLException e){ e.printStackTrace(); } return -1; } public int delete(ID id){ try { return getDao().deleteById( id); }catch ( SQLException e){ e.printStackTrace(); } return -1; }}
3.Classz:
@DatabaseTable( tableName = Classz.TABLE_NAME)public class Classz { public final static String TABLE_NAME = "t_class"; @DatabaseField(id = true) private String id; @DatabaseField(unique = true, canBeNull = false) private String name; @DatabaseField( defaultValue = "音乐楼") private String address; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "classz{ id =" + id +" name=" + name +",address=" + address +"}\n"; }}
4.ClasszDao:
public class ClasszDao extends BaseDao<Classz,String>{ public ClasszDao(Context context) { super(context); } @Override public Dao<Classz, String> getDao() { try { return getHelper().getDao(Classz.class); }catch ( SQLException e) { e.printStackTrace(); } return null; } /** * 根据班级名称获取班级信息 * @param className * @return */ public Classz getClassz( String className){ try { List<Classz> name = getDao().queryBuilder() .where().eq("name",className).query(); if( name != null && name.size() > 0){ return name.get( 0); } }catch ( SQLException e) { e.printStackTrace(); } return null; }}
5.DatabaseHelper:
/** * 数据库和表的创建 */public class DatabaseHelper extends OrmLiteSqliteOpenHelper{ private static final String TABLE_NAME = "my_orm_db"; private static final int DB_VERSION = 1; private static DatabaseHelper instance; /** * 获得数据库实例 * @param mContext * @return */ public static DatabaseHelper getInstance( Context mContext){ mContext = mContext.getApplicationContext(); if( instance == null ){ synchronized ( DatabaseHelper.class){ if( instance == null){ instance = new DatabaseHelper( mContext); } } } return instance; } public DatabaseHelper(Context context){ super( context, TABLE_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { Log.d("myorm","表开始新建"); try { TableUtils.createTable( connectionSource, Student.class); TableUtils.createTable( connectionSource, Classz.class); Log.d("myorm","表创建成功"); }catch ( SQLException e){ Log.d("myorm","表创建失败"); e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) { Log.d("myorm","更新表");// try {// // 删除旧的数据库表。// TableUtils.dropTable(connectionSource, Classz.class, true);// TableUtils.dropTable(connectionSource, Student.class, true);//// // 重新创建新版的数据库。// onCreate(sqLiteDatabase, connectionSource);// } catch (SQLException e) {// e.printStackTrace();// } }}
6.Student:
/** * 每一个实体类对应一张表 * 注解说明: * * 1.@DatabaseTable * DatabaseTable是一个类注解,一般用在实体类的上面,被添加该注解的类会创建一张表, * 表名称默认为类名称的小写,我们也可以通过 tableName 来指定表名称 * * 2.@DatabaseField * DatabaseField是一个属性注解,使用在被添加DatabaseTable注解的类中的属性字段上, * 被添加该注解的类字段,在表中也会有一个相对应的表字段 * */@DatabaseTable(tableName = Student.TABLE_NAME)public class Student { public static final String TABLE_NAME = "t_student"; @DatabaseField(generatedId = true) private int id; @DatabaseField(defaultValue = "玫玫") private String name; @DatabaseField( foreign = true, columnName = "ofClass", foreignAutoRefresh = true) private Classz ofClass; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Classz getOfClass() { return ofClass; } public void setOfClass(Classz ofClass) { this.ofClass = ofClass; } @Override public String toString() { return "student{ id =" + id +" name=" + name +",ofClass=" + ofClass +"}\n"; }}
7.StudentDao:
public class StudentDao extends BaseDao<Student, Integer>{ public StudentDao(Context context){ super( context); } @Override public Dao<Student, Integer> getDao() { try { return getHelper().getDao( Student.class); }catch ( SQLException e){ e.printStackTrace(); } return null; }}
8.HomeActivity:
public class HomeActivity extends AppCompatActivity { @BindView(R.id.ed_text) EditText edText; @BindView(R.id.tv_add_info) TextView tvAddInfo; @BindView(R.id.tv_delete_info) TextView tvDeleteInfo; @BindView(R.id.tv_update_info) TextView tvUpdateInfo; @BindView(R.id.tv_search_info) TextView tvSearchInfo; @BindView(R.id.tv_show_result) TextView tvShowResult; @BindView(R.id.tv_search_all_info) TextView tvSearchAllInfo; @BindView(R.id.tv_delete_info_class) TextView tvDeleteInfoClass; private StudentDao studentDao; private ClasszDao classzDao; private int number = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); ButterKnife.bind(this); studentDao = new StudentDao(HomeActivity.this); classzDao = new ClasszDao(HomeActivity.this); } /** * 向表里插入信息 */ public void addInfo() { Classz classz = new Classz(); classz.setId(String.valueOf(number)); classz.setName("钢琴" + number + "班"); Student student = new Student(); student.setOfClass(classz); student.setName("莉莉" + number); student.setId(number); int addStudent = studentDao.add(student); int addClassz = classzDao.add(classz); String str1 = addStudent > -1 ? "添加student成功" : "添加student失败"; String str2 = addClassz > -1 ? "添加classz成功" : "添加classz失败"; tvShowResult.setText(number + str1 + str2); number++; } /** * 按id来查找对象 */ public void queryById() { String str = edText.getText().toString().trim(); if (TextUtils.isEmpty(str)) { return; } try { int i = Integer.parseInt(str); Student student = studentDao.get(i); if( student == null ){ tvShowResult.setText("无此对象"); }else{ tvShowResult.setText(student.toString()); } } catch (SQLException e) { e.printStackTrace(); } } /** * 查询表中所有对象 */ public void queryAll() { List<Student> studentAll = studentDao.getAll(); List<Classz> classzsAll = classzDao.getAll(); tvShowResult.setText( "student:" + studentAll.toString() + "\n---------" + "\n" + "classz:" + classzsAll.toString()); } /** * 更新学生对象信息 */ public void updateInfo() { String str = edText.getText().toString().trim(); if (TextUtils.isEmpty(str)) { return; } Student student = studentDao.get( Integer.parseInt(str)); if( student == null){ tvShowResult.setText("无此学生对象,转班失败"); return; } String studentOldInfo = student.toString(); Classz classz = classzDao.getClassz("钢琴1班"); if( classz == null){ tvShowResult.setText("无此班级对象,转班失败"); return; } student.setOfClass(classz); int update = studentDao.update(student); tvShowResult.setText( "studentOldInfo:" + studentOldInfo + "\n" + ( update > -1 ? "转班成功" : "转班失败") + "\n" + "studentNewInfo:" + student.toString() ); } /** * 删除表中对象 */ public void deleteInfo() { String str = edText.getText().toString().trim(); if (TextUtils.isEmpty(str)) { return; } try { int i = Integer.parseInt(str); int result = studentDao.delete(i); tvShowResult.setText(result > -1 ? "删除成功" : "删除失败"); } catch (SQLException e) { e.printStackTrace(); } } /** * 删除表中班级对象 */ public void deleteInfoClassz() { String str = edText.getText().toString().trim(); if (TextUtils.isEmpty(str)) { return; } try { int result = classzDao.delete(str); tvShowResult.setText(result > -1 ? "删除成功" : "删除失败"); } catch (SQLException e) { e.printStackTrace(); } } @OnClick({R.id.tv_add_info, R.id.tv_delete_info, R.id.tv_update_info, R.id.tv_search_info, R.id.tv_search_all_info, R.id.tv_delete_info_class}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.tv_add_info: addInfo(); break; case R.id.tv_delete_info: deleteInfo();//删除学生 break; case R.id.tv_delete_info_class: deleteInfoClassz(); break; case R.id.tv_update_info: updateInfo(); break; case R.id.tv_search_info: queryById(); break; case R.id.tv_search_all_info: queryAll(); break; } }}
- OrmLite的简单学习(增删改查_两个表)
- Realm的简单使用(单表_增删改查_包含异步操作)
- ormLite 数据库的增删改查及条件查询
- 简单的增删改查(多表查询)
- android数据库学习_增删改查
- Android中使用OrmLite(一):表创建及增删改查
- Android中使用OrmLite(一):表创建及增删改查
- MVC学习笔记二:实现简单的增删改查
- Mysql 数据库学习 简单的增删改查
- 链表的基本操作之_增删改查
- 4_数据库的增删改查
- mysql学习记录:库的增删改查,表的增删改查
- (3)表的增删改查
- Android学习之使用SQLite实现简单的(CRUD)增删改查
- ASP.NET Web API 学习系列(一)创建与简单的增删改查
- sql的简单的增删改查
- Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例(一)
- Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例(二)
- Jsoup
- android状态栏和虚拟键颜色设置
- java中给集合添加一组元素的几种方法
- Android 切面编程
- HEEDS MDO 2017.04.2 Win64 & Linux64 2CD
- OrmLite的简单学习(增删改查_两个表)
- SpringBoot学习-(一)如何在MyEclipse中创建SpringBoot项目
- MySQL SELECT检索数据
- python web框架Django学习(六)数据库
- 操作系统 第一章 计算机系统概述
- c# winform登录(关闭当前form跳转到另一个form)
- @Autowired与@Resource区别
- admin、admin888 md5加密后16位和32位代码
- 有关spring springMVC mybatics的配置