您的位置:首页 > 移动开发 > Android开发

分享磨砺营马剑威老师讲解-Android项目实战开发第三波,内含完整代码

2016-08-11 00:00 716 查看
上节课给大家讲解了引导页的使用,本节讲解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

<
7fe0
/li>

*/

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息