上节课给大家讲解了引导页的使用,本节讲解xutils的使用,xutils共有四大模块。因为咱们要用它来保存数据库,如果用原生的SqliteOpenHelper比较繁琐,而且封装起来容易出问题,实际开发推荐使用ORM。下面就讲解下xutils数据库模块的使用。
xUtils 包含了很多实用的android工具.
xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
支持标准的Cookie策略, 区分domain, path...
事件注解去除不常用的功能, 提高性能.
数据库api简化提高性能, 达到和greenDao一致的性能.
图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...
首先要导入compile 'org.xutils:xutils:3.3.36'
初始化需要在application
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
}
}
然后需要使用DaoConfig,这里咱们要封装成util
public class DbUtil {
public synchronized static DbManager getDbManager(){
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
.setDbName("moliying_user")
.setDbVersion(1);
DbManager db = x.getDb(daoConfig);
return db;
}
}
下面开始建立UserBean类,使用Bean加注解的方式直接生成数据库表
@Table(name = "UserModelBean")
public class UserModelBean {
@Column(name = "id",autoGen = true)
private int id;
@Column(name = "username",isId = true,autoGen = false)
private String username;
@Column(name = "password")
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
然后继续写UserBeanDao
public class UserModelDao {
public void saveUser(UserModelBean userModelBean) throws DbException {
DbUtil.getDbManager().save(userModelBean);
}
public UserModelBean selectUser(String username) throws DbException {
UserModelBean userModelBean = DbUtil.getDbManager().findById(UserModelBean.class, username);
if (userModelBean != null){
return userModelBean;
}else {
return null;
}
}
}
下面开始封装数据库接口
public interface LocalDataInterface {
/**
* 保存用户
* @param userModelBean
*/
void saveUser(UserModelBean userModelBean);
/**
* 查询用户
* @param username
* @return
*/
UserModelBean selectUser(String username);
/**
* 保存事件
* @param accountBean
*/
void saveAccount(AccountBean accountBean);
/**
* 查询事件
* @param username
* @return
*/
AccountBean selectAccount(String username);
}
然后来实现这个接口
public class LocalDataModel implements LocalDataInterface{
private static LocalDataModel mLocalDataModel;
private static byte[] lock = new byte[0];
private UserModelDao mUserModelDao;
private AccountDao mAccountDao;
private LocalDataModel() {
mUserModelDao = new UserModelDao();
mAccountDao = new AccountDao();
}
public static LocalDataModel getInstance(){
synchronized (lock){
if (mLocalDataModel == null){
mLocalDataModel = new LocalDataModel();
}
return mLocalDataModel;
}
}
@Override
public void saveUser(UserModelBean userModelBean) {
try {
mUserModelDao.saveUser(userModelBean);
} catch (DbException e) {
e.printStackTrace();
}
}
@Override
public UserModelBean selectUser(String username) {
UserModelBean userModelBean = null;
try {
userModelBean = mUserModelDao.selectUser(username);
} catch (DbException e) {
e.printStackTrace();
}
return userModelBean;
}
@Override
public void saveAccount(AccountBean accountBean) {
try {
mAccountDao.saveAccount(accountBean);
} catch (DbException e) {
e.printStackTrace();
}
}
@Override
public AccountBean selectAccount(String username) {
AccountBean accountBean = null;
try {
accountBean = mAccountDao.selectAccount(username);
} catch (DbException e) {
e.printStackTrace();
}
return accountBean;
}
}
以上封装大家可以仔细看下,里面应该能学到不少东西,这样,数据库操作就只需要一行代码就搞定了,使用非常方便。
下面是示例:
//查询数据库
UserModelBean userModelBean = LocalDataModel.getInstance().selectUser(username);
//保存数据库
LocalDataModel.getInstance().saveUser(user);
Ok,下节课咱们就可以用到保存数据,本节课这里就封装好orm,具体的咱们下节继续,今天就到这里!!!
本文出自微信公众号mjw-java,更多内容关注微信公众号或访问www.moliying.com