OrmLite—表的创建及使用

1、创建表
然后要要创建一个实体类,对应表结构。OrmLite提供了两个注解,@DatabaseField 代表表列名,@DatabaseTable 表名 tableName值为数据库中表的真实名称。下列的User类必须有一个无参数的构造函数。

 @DatabaseTable
public class Person {
    @DatabaseField(columnName = "id",generatedId = true)
    int id;
    @DatabaseField
    String name;
    @DatabaseField
    int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2、创建dbHelper

public class MyDBHelper extends OrmLiteSqliteOpenHelper {
    private static MyDBHelper dbHelper;
    public static MyDBHelper getInstance(Context context, String dbname){
        if(dbHelper==null){
            synchronized (MyDBHelper.class) {
                if(dbHelper==null){
                    dbHelper=new MyDBHelper(context,dbname);
                }
            }
        }return dbHelper;
    }

    public MyDBHelper(Context context, String dbname) {
        super(context, dbname, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
        try {
            TableUtils.createTable(arg1, Person.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
                          int arg3) {
        try {
            TableUtils.dropTable(arg1, Person.class, true);
            onCreate(arg0,arg1);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

3、写工具类,实现增删改查的功能

public class MyDBUtil {
    MyDBHelper dbHelper;
    private Dao<Person, String> dao;
    public MyDBUtil(Context context, String dbname) {
        dbHelper=MyDBHelper.getInstance(context,dbname);
        try {
            dao=dbHelper.getDao(Person.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 增加个人信息
     * @param bean
     */
    public void add(Person bean){
        try {
            dao.create(bean);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 批量增加个人信息
     *
     */
    public void addList(List<Person> persons){
        try {
            dao.create(persons);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    /**
     * 删除个人信息
     */
    public void delete(Person p){

        try {
            dao.delete(p);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /**
     * 批量删除个人信息
     */
    public void deleteList(List<Person> persons){

        try {
            dao.delete(persons);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 更新个人信息
     */
    public void update(Person p){

        try {
            dao.createOrUpdate(p);//存在则更新 不存在则创建
//            mDbHelperDao.update(p);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }



    /**
     * 查询所有个人信息
     */
    public List<Person> queryAll(){
        List<Person> persons = null;
        try {
            persons = dao.queryForAll();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return persons;
    }

    /**
     * 条件查询
     * @param tag
     * @param content
     * @return
     */
    public List<Person> queryList(String tag,String content){
        List<Person> persons=null;
        try {
            persons = dao.queryBuilder().where().eq(tag,content).query();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return persons;
    }

}

4.MainActivity代码,实现数据库操作

“`
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button mBtn1;
private Button mBtn2;
private Button mBtn3;
private Button mBtn4;
private Button mBtn5;
private Button mBtn6;
private Button mBtn7;
private ListView mListView;
private List mPersons;
MyAdapter mAdapter;
MyDBUtil dbUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
initData();
}
private void initView() {
dbUtil=new MyDBUtil(this,”person_test”);
mBtn1 = (Button) findViewById(R.id.id_add_one);
mBtn2 = (Button) findViewById(R.id.id_add_list);
mBtn3 = (Button) findViewById(R.id.id_query_list);
mBtn4 = (Button) findViewById(R.id.id_query_all);
mBtn5 = (Button) findViewById(R.id.id_update);
mBtn6 = (Button) findViewById(R.id.id_delete_one);
mBtn7 = (Button) findViewById(R.id.id_delete_list);
mListView = (ListView) findViewById(R.id.id_listview);
mPersons = new ArrayList<>();
mAdapter=new MyAdapter(this);
mListView.setAdapter(mAdapter);
}

private void initData() {
    if (dbUtil.queryAll() != null) {
        mPersons = dbUtil.queryAll();
    }
    mAdapter.notifyDataSetChanged();

}
private void initListener() {

    mBtn1.setOnClickListener(this);
    mBtn2.setOnClickListener(this);
    mBtn3.setOnClickListener(this);
    mBtn4.setOnClickListener(this);
    mBtn5.setOnClickListener(this);
    mBtn6.setOnClickListener(this);
    mBtn7.setOnClickListener(this);
    //点击删除
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Person person = mPersons.get(position);
            dbUtil.delete(person);
            mPersons.remove(position);
            mAdapter.notifyDataSetChanged();
        }
    });

    //长按更新
    mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            Person person = mPersons.get(position);
            person.setName("神灵");
            dbUtil.update(person);
            mPersons.clear();
            mPersons=dbUtil.queryAll();
            mAdapter.notifyDataSetChanged();
            return false;
        }
    });
}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.id_add_one:
            add();//添加一条数据
            break;
        case R.id.id_add_list:
            addList();//批量添加数据
            break;
        case R.id.id_query_list:
            query("name","卡尔");//查询姓名为卡尔的所有数据
            break;
        case R.id.id_query_all:
            queryAll();//查询所有数据
            break;
        case R.id.id_update:
            update();//更新一条数据
            break;
        case R.id.id_delete_one:
            //delete(3);
            break;
        case R.id.id_delete_list:
            deleteList("name","神灵");//删除姓名为神灵的数据
            break;
    }
}

/**
 * 删除批量数据
 * @param name
 * @param content
 */
private void deleteList(String name, String content) {
    mPersons.clear();
    List<Person> persons=dbUtil.queryList(name,content);
    dbUtil.deleteList(persons);
    mPersons=dbUtil.queryAll();
    mAdapter.notifyDataSetChanged();
}

/**
 * 全部查询
 */
private void queryAll() {
    mPersons.clear();
    mPersons=dbUtil.queryAll();
    mAdapter.notifyDataSetChanged();
}

/**
 * 条件查询
 * @param name
 * @param content
 */
private void query(String name, String content) {
    mPersons.clear();
    mPersons=dbUtil.queryList(name,content);
    mAdapter.notifyDataSetChanged();
}

/**
 * 批量插入
 */
private void addList() {
    List<Person> persons=new ArrayList<>();
    for (int i = 0; i <5 ; i++) {
        Person p=new Person("卡尔",20);
        persons.add(p);
    }
    dbUtil.addList(persons);
    mPersons.clear();
    mPersons=dbUtil.queryAll();
    mAdapter.notifyDataSetChanged();
}

/**
 * 更新一个
 */
private void update() {
    Person p=mPersons.get(0);
    p.setName("神灵");
    dbUtil.update(p);
    mPersons.clear();
    mPersons=dbUtil.queryAll();
    mAdapter.notifyDataSetChanged();
}

/**
 * 添加一个
 */
private void add() {
    Person person=new Person("蓝猫",19);
    dbUtil.add(person);
    mPersons.add(person);
    mAdapter.notifyDataSetChanged();
}

public class MyAdapter extends BaseAdapter {
    Context context;

    public MyAdapter(Context context) {
        this.context = context;
    }

    @Override
    public int getCount() {
        return mPersons.size();
    }

    @Override
    public Person getItem(int position) {
        return mPersons.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        if(convertView==null){
            convertView= LayoutInflater.from(context).inflate(R.layout.item,null);
            vh=new ViewHolder();
            vh.tv= (TextView) convertView.findViewById(R.id.tv);
            convertView.setTag(vh);
        }else{
            vh= (ViewHolder) convertView.getTag();
        }
        vh.tv.setText(mPersons.get(position).getName()+mPersons.get(position).getAge());
        return convertView;
    }
    class ViewHolder{
        TextView tv;
    }
}

}

猜你喜欢

转载自blog.csdn.net/forzhers/article/details/54375538