定义实体
public abstract class EntityBase {
//@Id // 如果主键没有命名名为id或_id的时,需要为主键添加此注解
//@NoAutoIncrement // int,long类型的id默认自增,不想使用自增时添加此注解
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
数据库表创建
@Table(name = "autoForm", execAfterTableCreated = "CREATE UNIQUE INDEX index_autoForm_url ON autoForm(url)")
public class AutoForm extends EntityBase {
@Column(column = "url")
private String url;
@Column(column = "content")
private String content;
public String getUrl() {
return url;
}
.....
}
一些常用方法 借鉴部分
- DbUtils db = DbUtils.create(this);
- User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
- user.setEmail("wyouflf@qq.com");
- user.setName("wyouflf");
- db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值
- ...
- // 查找
- Parent entity = db.findById(Parent.class, parent.getId());
- List<Parent> list = db.findAll(Parent.class);//通过类型查找
- Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));
- // IS NULL
- Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
- // IS NOT NULL
- Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));
- // WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
- List<Parent> list = db.findAll(Selector.from(Parent.class)
- .where("id" ,"<", 54)
- .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
- .orderBy("id")
- .limit(pageSize)
- .offset(pageSize * pageIndex));
- // op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
- Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
- // op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
- Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));
- DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列
- List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
- ...
- //例:分组聚合查询出 Parent表中 非重复的name和它的对应数量
- List<DbModel> dbModels = db.findDbModelAll(Selector.form(Parent.class).select("distinct name,count(name) as num").groupBy("name"));
- db.execNonQuery("sql") // 执行自定义sql
转载部分 http://www.bubuko.com/infodetail-801946.html
(3)常见数据库操作
1)查询
DbUtils db = DbUtils.create(this);
List<Grade> stus = db.findAll(Selector.from(Grade.class).where("class_name", "=", ""));
List<Student>list = db.findAll(Selector.from(Student.class)
.where("id","<", 34)
.and(WhereBuilder.b("age",">", 15).or("age", " < ", 20))
.orderBy("id")
.limit(pageSize)
.offset(pageSize* pageIndex));
Studenttest = db.findFirst(Selector.from(Student.class).where("id","in", new int[]{1, 2, 3}));
Studenttest = db.findFirst(Selector.from(Student.class).where("id","between", new String[]{"2", "5"}));
DbModeldbModel =db.findDbModelAll(Selector.from(Student.class).select("name"));//select("name")只取出name列
List<DbModel>dbModels =db.findDbModelAll(Selector.from(Student.class).groupBy("name").select("name","count(name)"));
2)自定义查询(常用到的链接查询可以这样写)
SqlInfo sqlInfo = new SqlInfo();
sqlInfo.setSql("select * from tbl_Student a,tbl_class b where a.stu_class_id = b.id and a.id > ?");
sqlInfo.addBindArg(2);
List<DbModel> StudentByInfo = db.findDbModelAll(sqlInfo);
3)删除,包含三种方法:删除list集合,根据Id删除,删除一个对象
List<Grade> stus = db.findAll(Selector.from(Grade.class).where("class_name", "=", ""));
db.deleteAll(stus);
db.deleteById(Grade.class, 2);
db.delete(stus.get(3));
4)更新操作和删除操作类似,这里就一一列举
四、有关xUtils
开源项目地址以及作者:https://github.com/wyouflf/xUtils
xUtils api地址
http://xutilsapi.oschina.mopaas.com/