Sqlbean是一款使用Java面向对象思想来编写并生成Sql语句的工具,在此基础上对Android SQLite实现轻量级插件支持。其中内置大量常用SQL执行的方法,可以非常方便的达到你想要的目的,相对复杂的SQL语句也得以支持,在常规的项目开发几乎做到不写SQL,可以有效的提高项目开发的效率,让开发者更专注于业务代码的编写。
🚀特点: 零入侵, 自动建表, 自动维护表结构, 联表查询, 乐观锁,分页
implementation 'cn.vonce:vonce-sqlbean-android:1.2.0-beta25'
annotationProcessor 'cn.vonce:vonce-sqlbean-android:1.2.0-beta25'
@ SqlTable ("d_user" )
public class User {
@ SqlId (type = IdType .SNOWFLAKE_ID_16 )
private Long id ;
private String name ;
private Integer age ;
private Integer stature ;
private Integer gender ;
private String phone ;
private Date createTime ;
/**省略get set方法*/
}
3.获取连接(建议在上一步把所有表字段关系建立好,第一次获取连接时会自动创建表结构)
public class MainActivity extends AppCompatActivity {
private SqlBeanHelper <Essay , String > essaySqlBeanHelper ;
//private SqlBeanHelper<User, String> userSqlBeanHelper;
@ Override
protected void onCreate (Bundle savedInstanceState ) {
super .onCreate (savedInstanceState );
setContentView (R .layout .activity_main );
//方式一,单库模式
SQLiteHelper .init (this , "testdb" , 1 );//建议放在MainActivity或继承的Application
essaySqlBeanHelper = SQLiteHelper .db ().get (Essay .class );
//方式二,多库模式
//essaySqlBeanHelper = SQLiteHelper.db(this, "testdb1", 1).get(Essay.class);
//userSqlBeanHelper = SQLiteHelper.db(this, "testdb2", 1).get(User.class);
}
}
public class MainActivity extends AppCompatActivity {
private SqlBeanHelper <Essay , String > sqlBeanHelper ;
@ Override
protected void onCreate (Bundle savedInstanceState ) {
super .onCreate (savedInstanceState );
setContentView (R .layout .activity_main );
SQLiteHelper .init (this , "testdb" , 1 );
sqlBeanHelper = SQLiteHelper .db ().get (Essay .class );
}
//查询
public void select () {
//查询列表
List <User > list = userService .select ();
list = sqlBeanHelper .selectBy (Wrapper .where (Cond .gt (User ::getId , 10 )).and (Cond .lt (User ::getId , 20 )));
//指定查询
list = sqlBeanHelper .select (new Select ().column (User ::getId , User ::getName , User ::getPhone ).where ().gt (User ::getId , 10 ));
//查询一条
User user = userService .selectById (1 );
user = sqlBeanHelper .selectOneBy (Wrapper .where (eq (User ::getId , 1001 )));
//sql语义化查询《20岁且是女性的用户根据创建时间倒序,获取前10条》
list = sqlBeanHelper .select (new Select ().column (User ::getId , User ::getName , User ::getPhone ).where ().eq (User ::getAge , 22 ).and ().eq (User ::getGender , 0 ).back ().orderByDesc (User ::getCreateTime ).page (0 , 10 ));
//联表查询《20岁且是女性的用户根据创建时间倒序,查询前10条用户的信息和地址》
Select select = new Select ();
select .column (User ::getId , User ::getName , User ::getPhone , UserAddress ::getProvince , UserAddress ::getCity , UserAddress ::getArea , UserAddress ::getDetails );
select .innerJoin (UserAddress .class ).on ().eq (UserAddress ::getId , User ::getId );
select .where ().gt (User ::getAge , 22 ).and ().eq (User ::getGender , 0 );
select .orderByDesc (User ::getCreateTime );
select .page (0 , 10 );
//查询Map
Map <String , Object > map = sqlBeanHelper .selectMap (select );
List <Map <String , Object >> mapList = sqlBeanHelper .selectMapList (select );
}
//分页
public void getPageList () {
// 查询对象
Select select = new Select ();
PageHelper <User > pageHelper = new PageHelper <>(0 , 10 );
pageHelper .paging (select , sqlBeanHelper );
ResultData <List <Essay >> data = pageHelper .getResultData ();
}
//更新
public void update (Essay essay ) {
//根据bean内部id更新
long i = sqlBeanHelper .updateByBeanId (essay );
//根据外部id更新
//i = sqlBeanHelper.updateById(essay, 20);
//根据条件更新
//i = sqlBeanHelper.update(new Update<User>().set(User::getGender, 1).set(User::getName, "Jovi").setAdd(User::getAge, User::getAge, 1).where().eq(User::getId, 111).back());
}
//删除
public void deleteById (String [] id ) {
//根据id删除
long i = sqlBeanHelper .deleteById (id );
//根据条件删除
//i = sqlBeanHelper.deleteBy(Wrapper.where(gt(User::getAge, 22)).and(eq(User::getGender, 1)));
}
//插入
public void add () {
List <Essay > essayList = new ArrayList <>();
for (int i = 0 ; i < 100 ; i ++) {
Essay essay = new Essay (i , "name" + i );
essayList .add (essay );
}
sqlBeanHelper .insert (essayList );
}
}