关于ebean一些常用的查询

实体类
import io.ebean.annotation.Model;
import lombok.Data;
import org.springframework.data.annotation.Id;

import javax.persistence.Entity;

@Entity
@Model(table = "wechat_qrcode")
@Data
public class WxQrcode {

@Id
private String id;

private String appId;

private String code;

}

@Model(table = "wechat_qrcode")中的table指向数据库中的表名(建立实体与数据库表的映射关系)
实体类中的属性与表中的属性成对应映射关系默认为驼峰转为(_)下划线

查询数据库中该实体对应的记录
import io.ebean.EbeanServer;

@Autowired
private EbeanServer server;
  
WxQrcode qrinfo = server.find(WxQrcode.class).where().eq("appId",appId).eq("code",code).findOne();  
此时对应的参数已经映射到实体属性了

常用的还有自定义sql的写法可以解决大部分问题
String sql = "select wechat_url from wechat_pic_url where pic_id in (?)"; 
单条记录  
SqlRow imgUrl =server.sqlQuery(sql).setParameter(1,imageUrl).findOne();

//SqlRow imgUrl =server.sqlQuery(sql).setParams(imageUrl);
多条记录
List imgUrllist =server.sqlQuery(sql).setParameter(1,imageUrl).findList();

setParameter(a,b)中 a为参数位置,b为参数值(入参的值有判断和其他处理时建议用这个方法setParameter(1,str1).setParameter(2,str2))
setParams设置多个参数,参数位置按照入参顺序

setParams
单条取对应属性值
if (imgUrl!=null){
image.setImageUrl(imgUrl.getString("wechat_url"));
}
多条取值直接循环一下吧

WxQrcode qrinfo = new WxQrcode();
qrinfo.setCode(code);
qrinfo.setAppId(appId);
server.insert(qrinfo);
此时调用insert会报错因为自动生成的sql为insert into wechat_qrcode (id,app_id,code) values(null,app_id,code) 因为表中的主键是自增的并且不能为null此时插入null会报错
我是用createSqlUpdate方法解决这个问题的 写法比较丑陋
server.createSqlUpdate("insert into wechat_qrcode (app_id,code) values(?,?)").setParams(appId,code).executeNow();
如果说这个对象的id确定了那么可以直接调用insert方法
posted @ 2020-10-22 17:43  若素RuoSu  阅读(412)  评论(0)    收藏  举报