ormlite框架数据库+gson解析假接口使用

ormlite框架使用

DaoHelper类

package com.example.ormlitetest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.example.ormlitetest.bean.User;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.logger.Log;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

import java.io.File;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.logging.Logger;

/**
 * Created by huangjh on 2016/12/22 0022 20:07
 */

public class DaoHelper extends OrmLiteSqliteOpenHelper {
    private Dao<User, Integer> userDao;
    private static DaoHelper daoHelper;

    public DaoHelper(Context context) {
        super(context, "mydatabase.db", null, 1);
    }


    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
        try {
            TableUtils.createTable(connectionSource, User.class);
            android.util.Log.e("DaoHelper", "onCreate");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try {
            TableUtils.dropTable(connectionSource, User.class, true);
            TableUtils.createTable(connectionSource, User.class);
            android.util.Log.e("DaoHelper", "onUpgrade");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public static synchronized DaoHelper getInstance(Context context) {
        if (daoHelper == null) {
            synchronized (DaoHelper.class) {
                daoHelper = new DaoHelper(context);
            }
        }
        return daoHelper;
    }

    public Dao<User, Integer> getUserDao() throws SQLException {
        if (userDao == null) {
            userDao = getDao(User.class);
        }
        return userDao;
    }

    @Override
    public void close() {
        super.close();
        userDao = null;
    }
}
City类,既是实体类也是表结构

package com.example.ormlitetest.bean;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

/**
 * City部分是整个json串中的一部分,这部分是需要存到数据库的,所以尽量
 * 不要写在CityParseEntity中,否则使用起来不方便。
 * Created by huangjh on 2016/12/24 0024 11:20
 */
@DatabaseTable(tableName = "city")
public class City {
    @DatabaseField(generatedId = true)
    private int id;
    @DatabaseField(columnName = "province")
    private String province;
    @DatabaseField(columnName = "city")
    private String city;
    @DatabaseField(columnName = "country")
    private String country;
    @DatabaseField(columnName = "town")
    private String town;
    @DatabaseField(columnName = "code")
    private String code;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getTown() {
        return town;
    }

    public void setTown(String town) {
        this.town = town;
    }

    public City() {
    }

    public City(String city, String code, String country, String province, String town) {
        this.city = city;
        this.code = code;
        this.country = country;
        this.province = province;
        this.town = town;
    }

    @Override
    public String toString() {
        return "City{" +
                "province='" + province + '\'' +
                ", town='" + town + '\'' +
                ", country='" + country + '\'' +
                ", code='" + code + '\'' +
                ", city='" + city + '\'' +
                ", id=" + id +
                '}';
    }
}


从url中解析json串,并使用GsonFormat快速生成的实体类CityParseEntity(将City部分另写了一个实体类,因为要将City部分数据存到数据库的,如果放在CityParseEntity

则不方便操作)。

CityParseEntity

package com.example.ormlitetest.parse;

import java.util.List;

/**
 * Created by huangjh on 2016/12/24 0024 15:19
 */

public class CityParseEntity {


    /**
     * success : true
     * body : {"data":[{"province":"江苏省","city":"连云港","country":"灌云县","code":222200,"town":"南岗乡"},{"province":"江苏省","city":"连云港","country":"灌南县","code":222200,"town":"南岗乡"},{"province":"江苏省","city":"连云港","country":"新浦区","code":222200,"town":"南岗乡"},{"province":"江苏省","city":"连云港","country":"海州区","code":222200,"town":"南岗乡"},{"province":"江苏省","city":"连云港","country":"东海县","code":222200,"town":"南岗乡"},{"province":"江苏省","city":"南京","country":"浦口区","code":222200,"town":"南岗乡"}]}
     * errorCode : -1
     * msg : 成功
     */

    private String success;
    private BodyBean body;
    private String errorCode;
    private String msg;

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    public BodyBean getBody() {
        return body;
    }

    public void setBody(BodyBean body) {
        this.body = body;
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public static class BodyBean {
        private List<DataBean> data;

        public List<DataBean> getData() {
            return data;
        }

        public void setData(List<DataBean> data) {
            this.data = data;
        }

        /**
         * 在使用GsonFormat时可以选择不生成
         * 
         */
        
        /*public static class DataBean {
            *//**
             * province : 江苏省
             * city : 连云港
             * country : 灌云县
             * code : 222200
             * town : 南岗乡
             *//*

            private String province;
            private String city;
            private String country;
            private int code;
            private String town;

            public String getProvince() {
                return province;
            }

            public void setProvince(String province) {
                this.province = province;
            }

            public String getCity() {
                return city;
            }

            public void setCity(String city) {
                this.city = city;
            }

            public String getCountry() {
                return country;
            }

            public void setCountry(String country) {
                this.country = country;
            }

            public int getCode() {
                return code;
            }

            public void setCode(int code) {
                this.code = code;
            }

            public String getTown() {
                return town;
            }

            public void setTown(String town) {
                this.town = town;
            }
        }*/
    }
}
MainActivity

package com.example.ormlitetest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.example.ormlitetest.bean.City;
import com.example.ormlitetest.bean.User;
import com.example.ormlitetest.parse.CityParseEntity;
import com.google.gson.Gson;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.DeleteBuilder;
import com.j256.ormlite.stmt.UpdateBuilder;

import org.json.JSONObject;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private DaoHelper daoHelper;
    private Dao<User, Integer> dao;
    private Dao<City, Integer> cityDao;
    private DaoHelper1 daoHelper1;

    private String json = "{\"success\": \"true\", "
            + "\"body\":  {\"data\":[{\"province\": \"江苏省\", "
            + "\"city\": \"连云港\",\"country\": "
            + "\"灌云县\", \"code\": 222200,\"town\": \"南岗乡\"},  {"
            + "\"province\": \"江苏省\", "
            + "\"city\": \"连云港\",\"country\": "
            + "\"灌南县\", \"code\": 222200,\"town\": \"南岗乡\"},{\"province\": \"江苏省\", "
            + "\"city\": \"连云港\",\"country\": "
            + "\"新浦区\", \"code\": 222200,\"town\": \"南岗乡\"},{\"province\": \"江苏省\", "
            + "\"city\": \"连云港\",\"country\": "
            + "\"海州区\", \"code\": 222200,\"town\": \"南岗乡\"},{\"province\": \"江苏省\", "
            + "\"city\": \"连云港\",\"country\": "
            + "\"东海县\", \"code\": 222200,\"town\": \"南岗乡\"},{\"province\": \"江苏省\", "
            + "\"city\": \"南京\",\"country\": "
            + "\"浦口区\", \"code\": 222200,\"town\": \"南岗乡\"}]}, \"errorCode\": \"-1\",\"msg\": \"成功\"}";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.e("MainActivity", json);
        try {
            daoHelper = DaoHelper.getInstance(this);
            dao = daoHelper.getUserDao();
            daoHelper1 = DaoHelper1.getInstance(this);
            cityDao = daoHelper1.getCityDao();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        delete();

        xiugai();

        query();

        insertCity();

    }

    public void insert() {
        try {
            for (int i = 0; i < 100; i++) {
                User user = new User(12, "大傻逼" + i);
                daoHelper.getUserDao().createIfNotExists(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void delete() {
        DeleteBuilder<User, Integer> deleteBuilder = null;
        try {
            deleteBuilder = daoHelper.getUserDao().deleteBuilder();
            deleteBuilder.where().le("id", 84);

            ArrayList<Integer> ids = new ArrayList<>();
            ids.add(3);
            ids.add(4);
            daoHelper.getUserDao().deleteIds(ids);

            daoHelper.getUserDao().delete(daoHelper.getUserDao().queryForId(5));

            daoHelper.getUserDao().deleteById(6);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public void xiugai() {
        UpdateBuilder<User, Integer> updateBuilder = null;
        try {
            updateBuilder = daoHelper.getUserDao().updateBuilder();
            updateBuilder.where().eq("id", 7);  //eq字段?
            updateBuilder.updateColumnValue("name", "黄继海");
            updateBuilder.update();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void query() {
        try {
            User user = daoHelper.getUserDao().queryForId(7);
            if (user != null) {
                Log.e("MainActivity", user.getName() + user.getAge() + user.getId());
            }

            List<User> list = dao.queryForEq("name", "黄继海");
            for (User user1 : list
                    ) {
                Log.e("MainActivity", user1.getName() + user1.getAge() + user1.getId());
            }


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void insertCity() {
        try {
            Gson gson = new Gson();
            CityParseEntity entity = gson.fromJson(json, CityParseEntity.class);
            List<City> dataBeenList = entity.getBody().getData();
            for (int i = 0; i < dataBeenList.size(); i++) {
                City dataBean=dataBeenList.get(i);
                cityDao.createIfNotExists(dataBean);
            }


//            for (int i = 0; i < 5; i++) {
//                City city = new City("灌云县", "连云港", "江苏省", "伊山镇" + i,"222200");
//                cityDao.createIfNotExists(city);
//            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

    }


}

最后在build中注入依赖

    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'com.j256.ormlite:ormlite-core:4.48'
    compile 'com.google.code.gson:gson:2.8.0'

ormlite数据库使用demo


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值