关于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
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方法

浙公网安备 33010602011771号