开源中国 2018 年度最后一场技术盛会邀你来约~错过就要等明年啦!点此立即预约

Xiaolei123 / XAndrDBAndroid

指数
0
Watch 22 Star 42 Fork 6
加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
安卓端的数据库操作框架ORM,安卓端的MyBatis。 展开 收起

Loading...
README.md

#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里面定义的方法就是在操作数据库了。

###这是一个完全面向切面,使用 自定义注解+反射+动态代理 结合在一起发挥强大功能的数据库框架。

##曾经.. 曾经有一份至真嘅爱情摆喺我面前, 但我冇去珍惜, 到冇咗嘅时候先至后悔莫及, 尘世间最痛苦莫过于此。 如果个天可以畀个机会我返转头嘅话,我会同个女仔讲我爱佢! 如果 系都要喺呢份爱加上一个期限, 我希望系一万年! 别人笑我太疯癫,我笑别人看不穿,不见五陵豪杰墓,无花无酒锄作田。

项目点评 ( 1 )

你可以在登录后,发表评论

搜索帮助