一、xUtils3的引入
implementation 'org.xutils:xutils:3.9.0'
二、混淆配置
-keepattributes Signature,*Annotation*
-keep public class org.xutils.** {
public protected *;
}
-keep public interface org.xutils.** {
public protected *;
}
-keepclassmembers class * extends org.xutils.** {
public protected *;
}
-keepclassmembers @org.xutils.db.annotation.* class * {*;}
-keepclassmembers @org.xutils.http.annotation.* class * {*;}
-keepclassmembers class * {
@org.xutils.view.annotation.Event <methods>;
}
三、权限配置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 可选 -->
四、初始化
// 在application的onCreate中初始化
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
...
}
五、使用
public static DbManager dbManager;
/**
* xutil 数据库初始化
*/
public void initDb() {
//本地数据的初始化
try {
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
.setDbDir(new File(Environment.getExternalStorageDirectory().toString() + "/DB/"))
//设置数据库名
.setDbName("area.db")
.setTableCreateListener(new DbManager.TableCreateListener() {
@Override
public void onTableCreated(DbManager db, TableEntity<?> table) {
}
})
//设置数据库版本
.setDbVersion(1)
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
db.getDatabase().enableWriteAheadLogging();
//开启WAL, 对写入加速提升巨大(作者原话)
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
//数据库升级操作
}
});
dbManager = x.getDb(daoConfig);
} catch (Exception e) {
e.printStackTrace();
}
}
import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;
/**
* @author Administrator
*/
@Table(name = "area")
public class AreaBean {
@Column(name = "id", isId = true, autoGen = true)
private int id;
@Column(name = "areaid")
private int areaid;
@Column(name = "name")
private String name;
@Column(name = "p_id")
private int p_id;
@Column(name = "level")
private String level;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAreaid() {
return areaid;
}
public void setAreaid(int areaid) {
this.areaid = areaid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getP_id() {
return p_id;
}
public void setP_id(int p_id) {
this.p_id = p_id;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
// 增
AreaBean areaBean = new AreaBean();
areaBean.setAreaid("1000");
areaBean.setName("北京");
areaBean.setP_id(10001);
areaBean.setLevel(0);
dbManager.save(areaBean);
// 查
List<AreaBean> plist = dbManager.selector(AreaBean.class).where("level", "=", "province").findAll();
// 多条件检索
List<AreaBean> clist = dbManager.selector(AreaBean.class).where("level", "=", "city").where("p_id", "=", id).findAll();