Score
0
Watch 23 Star 43 Fork 6

Xiaolei123 / XAndrDBAndroid

Join us
Explore and code with more than 2 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
安卓端的数据库操作框架ORM,安卓端的MyBatis。 spread retract

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

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

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

Comments ( 1 )

Sign in for post a comment

Android
1
https://gitee.com/xcode_xiao/XAndrDB.git
git@gitee.com:xcode_xiao/XAndrDB.git
xcode_xiao
XAndrDB
XAndrDB
master

Help Search