同步操作将从 Xiaolei123/XAndrDB 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#XAndrDB 安卓端开源数据库ORM操作框架。
##使用说明: 在使用本框架之前首先 将本项目根目录下的本项目引入到你的项目中,然后。 在你的app的AndroidManifest.xml中配置:
<application
android:name="com.xcode.xandrdb.Session.SessionApplication"
……
>
####这时候就该考虑使用问题了。 不多说,直接贴代码:
package com.xcode.xandrdb.mapper;
import com.xcode.xandrdb.User;
import com.xcode.xandrdb.annotation.Create;
import com.xcode.xandrdb.annotation.Delete;
import com.xcode.xandrdb.annotation.Insert;
import com.xcode.xandrdb.annotation.Select;
import com.xcode.xandrdb.annotation.Update;
import com.xcode.xandrdb.annotation.name;
public interface test
//插入的操作
@Insert("INSERT INTO xiaolei ('sname', 'snumber') VALUES ('xiaolei', 'xiaolei')")
public String insert();
//删除操作
@Delete("delete from xiaolei where id = #{id}")
public String delete(@Param("id")int id);
//更新操作
@Update("UPDATE xiaolei SET sname='xiaolei2', snumber='xiaolei2' WHERE (_id=#{id})")
public String update(@Param("id")int id);
//查询操作
@Select("SELECT * FROM xiaolei WHERE _id = #{id}")
public User[] select(@Param("id")int id);
//新建操作
@Create("create table #{user.name}(_id integer primary key autoincrement,sname text,snumber text)")
public String create(@Param("user")User user);
}
这里只是定义了一系列的数据库操作action的Mapper。那我们看看怎么使用这些Mapper:
Session session = SessionFactory.getSession(new SessionConfig().setDBName("xiaolei"));
test t1 = session.getMapper(test.class);
User users[] = t1.select(1);
System.out.println(users);
支持数据缓存,有时候,我需要在两秒内对查询到的数据进行缓存,不需要每次要数据就去数据库中查询。那么这个特性可以帮助你。
//查询操作
@Catch(500)
@Select("SELECT * FROM xiaolei where sname=#{name}")
public List<User> select(@Param("name")String name);
这个@Catch(500)注解 参数是你自己设置的缓存的时间。不写参数默认为 2 * 1000 ms。
支持事务,有时候我需要批量向数据库中插入大量的数据,可是大量数据的写入会导致整个APP卡顿。那么为了解决这个问题 你可以这样:
@Transation
@Insert("INSERT INTO xiaolei ('sname', 'snumber') VALUES ('xiaolei', 'xiaolei')")
public String insert();
当你需要进行大量数据的操作的时候,你可以使用 @Transation
注解来解决这个问题。
经测试 在模拟器中循环插入五十条数据,没有开启 Transation 的时候 耗时:220ms
开启了Transation的时候,耗时:7ms。并且内部使用Handler进行异步操作。绝对不会影响到APP的流畅性。
当然在你操作完成之后别忘了使用 session.commit();
。否则是不会生效的。
是的,所有的数据库操作都必须使用 Session
对象,去操作。然后使用 Session
对象拿到mapper,内部通过动态代理操作返回你一个mapper对象,然后你操作你的mapper里面定义的方法就是在操作数据库了。
###这是一个完全面向切面,使用 自定义注解+反射+动态代理 结合在一起发挥强大功能的数据库框架。
##曾经.. 曾经有一份至真嘅爱情摆喺我面前, 但我冇去珍惜, 到冇咗嘅时候先至后悔莫及, 尘世间最痛苦莫过于此。 如果个天可以畀个机会我返转头嘅话,我会同个女仔讲我爱佢! 如果 系都要喺呢份爱加上一个期限, 我希望系一万年! 别人笑我太疯癫,我笑别人看不穿,不见五陵豪杰墓,无花无酒锄作田。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。