在gradle中配置环境。
allprojects { repositories { jcenter()} }maven { url "https://jitpack.io" }
dependencies { }
前缀+名字,如activity_main 例如:MainActivity.java映射的xml文件名就为activity_main.xml,TTSFragment.java映射的xml文件名就为fragment_t_t_s.xml。 Java文件以大写字母分隔单词,xml以下划线分隔单词。
直接在Activity或Fragment声明控件(View及其子类)为成员变量,不加任何注解。它会以这个View的名字来绑定该控件在xml中的id的value,即@+id/后指定的内容。
优先级比不加注解高,简单的说,加上这个注解就不会使用默认的使用成员属性名来对应xml的控件id的方式,而是使用该注解指定的id与xml的控件id绑定。
优先级最高,加上该注解,jackknife会直接跳过该控件的自动注入。一般使用在使用Java代码new出来的控件提取到全局的情况。也可以在ViewStub懒加载布局的时候使用。
)创建一个自定义的事件注解,在这个注解上配置@EventBase,并使用在你要实际回调的方法上,注意保持参数列表跟原接口的某个回调方法的参数列表保持一致。在jackknife-annotations-ioc中也提供了常用的事件的注解,比如@OnClick。
继承com.lwh.jackknife.app.Application,并在Application中完成初始化,如果你使用2.0.15+的版本,就当我没说。因为从v2.0.15开始不再需要使用继承的方式。最后调用Orm.init(OrmConfig)完成初始化配置;//调用Orm的init方法
如果你想使用jackknife-orm自动创表,你只需要实现OrmTable接口再配置一些基本信息即可。 需要注意的是,在一个OrmTable的实现类中,至少要有一个配置主键或外键的属性。
配置你要映射的表名
配置你要映射的列名
配置你要跳过映射的列名
配置主键
配置检查条件
配置默认值
配置唯一约束
配置非空约束
以User为例,TableManager.createTable(User.class);//创建OrmTable的实现类的表,创表一般在初始化配置时完成,因为这样可以在表结构改变时,自动更新。 如果在第一步中使用了OrmConfig的创表配置config.tables(),则不需要此步骤。
首先要获取到操作该表的DAO对象,以User为例 OrmDao<User> dao = DaoFactory.getDao(User.class);
名称 | 所在类 | 描述 |
---|---|---|
insert(T bean) | OrmDao | 单条插入,插入一条数据 |
insert(List<T> bean) | OrmDao | 多条插入,插入一些数据 |
deleteAll() | OrmDao | 删除所有数据 |
delete(WhereBuilder builder) | OrmDao | 按条件删除数据 |
update(WhereBuilder builder) | OrmDao | 按条件修改数据 |
selectOne() | OrmDao | 查询第一条数据 |
selectOne(QueryBuilder builder) | OrmDao | 查询最符合条件的一条数据 |
select(QueryBuilder builder) | OrmDao | 按条件查询数据 |
selectAll() | OrmDao | 查询所有数据 |
selectCount() | OrmDao | 查询数据的条数 |
selectCount(QueryBuilder builder) | OrmDao | 查询符合条件数据的条数 |
createTable(Class<? extends OrmTable> tableClass) | TableManager | 创建一张表 |
dropTable(Class<? extends OrmTable> tableClass) | TableManager | 删除一张表 |
upgradeTable(Class<? extends OrmTable> tableClass) | TableManager | 升级一张表 |
它是一个强大的数据筛选器,可以支持多条件筛选。
在继承这个接口的接口中提供与界面显示相关的操作,比如显示某某数据,或获取从控件中获取用户输入的结果。建议继承这个 接口的接口也以I开头命名,避免与自定义View混淆。
在presenter中持有view和model的引用,它的职责是处理业务层的操作,如把model中的数据加载到view上显示、文件下载等。耗时操作务必在presenter中完成,jackknife-mvp可以有效防止activity的内存泄漏。
比如public class MainActivity extends BaseActivity<IMainView, MainPresenter> implements IMainView。你可以用jackknife提供的com.lwh.jackknife.mvp.BaseActivity,也可以参考它自己来实现。
关于mvp这种架构,市面上众说纷纭,有支持的,也有不支持的。总之,mvp既有优点,也有缺点。先说优点,解除模型数据和UI显示的耦合,界面显示和业务操作逻辑分离,易于创建副本,提高可维护性。缺点也是显而易见的,Presenter和View类爆炸的问题很严重,也就是说,如果你只需要写一个很小的项目,是完全没有必要使用mvp的。当然,个人建议你在业务变化大的界面上使用mvp,而在一些简单的界面(如SplashActivity启动页)上没有必要使用。
如果你需要在一组相似的业务需求前后添加相同的业务流程处理,比如百度云盘上传文件的一系列流程,有校验MD5值,如果之前已经被记录了,就可以秒传。以及识别一些非法的文件等。而这些业务可能会在以后发生变化,但是你上传文件的地方太多了,导致牵一发而动全身,到处都要改,这是很不好的。最好的编程体验就是高内聚、低耦合,要改,也是在少数的一两个类上面改。
简书 : https://www.jianshu.com/u/8f43e6fd56db, https://www.jianshu.com/u/f408bdadacce CSDN : http://blog.csdn.net/yiranaini_/