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 +
'}';
}
}
则不方便操作)。
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'