# XAndrDB **Repository Path**: zrw_git/XAndrDB ## Basic Information - **Project Name**: XAndrDB - **Description**: 安卓端的数据库操作框架ORM,安卓端的MyBatis。 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2023-11-24 - **Last Updated**: 2023-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: Android数据库 ## README #XAndrDB 安卓端开源数据库ORM操作框架。 ##使用说明: 在使用本框架之前首先 将本项目根目录下的本项目引入到你的项目中,然后。 在你的app的AndroidManifest.xml中配置: ```xml ``` ####这时候就该考虑使用问题了。 不多说,直接贴代码: ```java 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: ```java Session session = SessionFactory.getSession(new SessionConfig().setDBName("xiaolei")); test t1 = session.getMapper(test.class); User users[] = t1.select(1); System.out.println(users); ``` 支持数据缓存,有时候,我需要在两秒内对查询到的数据进行缓存,不需要每次要数据就去数据库中查询。那么这个特性可以帮助你。 ```java //查询操作 @Catch(500) @Select("SELECT * FROM xiaolei where sname=#{name}") public List 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里面定义的方法就是在操作数据库了。 ###这是一个完全面向切面,使用 自定义注解+反射+动态代理 结合在一起发挥强大功能的数据库框架。 ##曾经.. 曾经有一份至真嘅爱情摆喺我面前, 但我冇去珍惜, 到冇咗嘅时候先至后悔莫及, 尘世间最痛苦莫过于此。 如果个天可以畀个机会我返转头嘅话,我会同个女仔讲我爱佢! 如果 系都要喺呢份爱加上一个期限, 我希望系一万年! 别人笑我太疯癫,我笑别人看不穿,不见五陵豪杰墓,无花无酒锄作田。