继续同上 工作半年总结

web 


数据库持久层

ebean modol



1: Model定义

@Entity
@Table(name = "t_activity_feed_tag_r")
public class FeedTagR extend Model {
    @Id
    @Column(name = "activity_feed_tag_r_id")
    private  long feedTagRId;
    @Column(name = "activity_feed_id")
   private  long feedId;
@Transient  //不进行与数据库列映射
private String sellingTimeConetent;
@Formula(select = "(select  count(distinct user_id) from t_user_wish_size v where v.is_deleted=0 and v.wish_goods_id = ${ta}.wish_goods_id)") //从另一个表查询
private Long finishedCount;

public static Model.Finder<Long,FeedTagR>feedTagRFinder =new Model.Finder<Long,FeedTagR>(Long.class,FeedTagR.class);


}


2:查询

public static PagingList<WishGoods> getWishGoodsByGoodsName(String wishGoodsName,Paginator oldPaginator){

    Paginator paginator = queryValidation(oldPaginator);
    return  wishGoodsFinder.where().eq("is_deleted", 0).ilike("name", "%" + wishGoodsName + "%").orderBy(paginator.getSortBy() + " " +paginator.getOrder()).findPagingList(paginator.getPageSize());

}


3
PagingList<WishGoods> wishGoodsPagingList;
if(goodIdList != null ) {
   //只通过搭配Id查询
    if(goodsName ==null){
            wishGoodsPagingList = WishGoods.wishGoodsFinder.where().eq("is_deleted", 0).disjunction().add(Expr.in("real_goods_id", goodsListNotStartWithWP)).add(Expr.in("wish_goods_sn", goodsListStartWithWP)).orderBy(paginator.getSortBy() + " " +paginator.getOrder()).findPagingList(paginator.getPageSize());
    }
    // 搭配和商品名称
    else {
          wishGoodsPagingList =  WishGoods.wishGoodsFinder.where().eq("is_deleted", 0).conjunction().add(Expr.or(Expr.in("real_goods_id", goodsListNotStartWithWP), Expr.in("wish_goods_sn", goodsListStartWithWP))).add(Expr.ilike("name", "%" + goodsName + "%")).orderBy(paginator.getSortBy() + " " + paginator.getOrder()).findPagingList(paginator.getPageSize());
    }
}
disjunction 取并集 
conjunction 取交集

4:
事物处理
Ebean.beginTransaction();
try {
    CommonError error = validation(entity);
    if(error.getCode()!=CommonError.OK.getCode()){
        return ok(AdminResult.result(error));
    }
    else if ((UserMapping.find.where().eq("user_id", userId).findList().size()>0) || (UserMapping.find.where().eq("cms_user_id", cmsUserId).findList().size() >0)) {
        return ok(AdminResult.result(CommonError.USERID_OR_CMSUSERID_EXIST_ERROR));
    }
    entity.save();
    userEntity.save();
    Ebean.commitTransaction();
}catch (Exception e){
    return ok(AdminResult.result(CommonError.SYS_ERROR));
}finally {
    Ebean.endTransaction();
}
return ok(AdminResult.ok());
5 写日志
开头
private static org.slf4j.Logger accessLogger = LoggerFactory.getLogger(AdminUserService.class);
accessLogger.info("add:XXXXXXXXXX");


日志 配置文件ogger.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">


    <appender name="OPERATOR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${application.home}/admin_operator.log</file>


    <triggeringPolicy   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>100MB</MaxFileSize>
    </triggeringPolicy>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
    </layout>
</appender>



    <root level="INFO">
        <appender-ref OPERATOR"/>
        <appender-ref ref="FILE" />
    </root>
    </configuration>




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值