美文网首页
分享磨砺营马剑威老师讲解-Android项目实战第三波,内含完整

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

作者: 磨砺营IT | 来源:发表于2016-08-11 09:19 被阅读306次

    上节课给大家讲解了引导页的使用,本节讲解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

    相关文章

      网友评论

          本文标题:分享磨砺营马剑威老师讲解-Android项目实战第三波,内含完整

          本文链接:https://www.haomeiwen.com/subject/ykojsttx.html