工作总结(一)

由于这是我的第一篇工作总结,所以我会尽量把自己遇到的典型问题写出来;以后我会每周都写一篇总结,写一写自己遇到的难题以及解决方案,另外说明一下,由于本人是初入行的菜鸡,所以也只能写一些技术含量并不高的问题(对我来说是难题)。

首先说一下我所做的项目是使用spring+spring data jpa,jpa操作数据库是真的很方便,但是对于一些较为复杂的业务流程就不行了,这时候还是使用sql语句更加便利,然而由于用习惯了jpa,导致现在我的mybatis和sql语句都快忘记了0.0,看来我要抽空去复习一下,因此我们平时工作中不仅要不断的学习,也要持续不断的复习巩固。

问题1:当时让我去改一个问题单,它的大致意思是前端有一个功能返回的错误信息显示英文,而为了用户的体验度建议改成中文,对了在这之前我要说明一下自己是做纯后端的,当时我首先就想到直接翻译成中文不就行了?但是后来我知道了后端返给前端的数据一般是不能使用中文的,因为如果把项目部署到服务器上后,不同的系统去访问可能会存在中文乱码的问题,然后我就查看了项目的代码,发现返给前端的数据果然都没有英文的,甚至连注释都是英文的(当然了这个就没有多大的必要);当然如果是保存到数据库中的数据就没有限制了,如果你正好把错误信息存放到了数据库中,这时候为了方便建议直接存中文。还有一些批量的操作怎么让它返回具体对应每一条的是否成功信息,其实很简单,只需要使用一个List<map<String,Object>>封装数据返给前端即可,map里的数据有"id":对应的就是这一行数据的标识id,"isSuccess":布尔类型数据表示是否成功,"msg":表示成功或失败的原因;这样的话通过id就能知道对应这行数据是否成功以及具体的原因。

问题2:在数据库中表的同一个字段可以根据不同的值去查询,比如表中有个字段为userName,userName的值有很多,例如需要查询出所有姓张和姓马的数据,实际上就是使用or来拼接查询条件,但是如何用jpa来实现?高级查询CriteriaBuilder cb的cb.or(查询条件)就可以实现或者的关系,示例代码如下:

                List<Predicate> list = new ArrayList<Predicate>();
                List<String> nameList = (List<String>) map.get("name");
                if(null !=map.get("name") && ((List<String>) map.get("name")).size()>0){
                    for (String name : nameList) {
                     list.add(cb.like(root.get("userName").as(String.class),name+"%"));
                    }
                }
                Predicate[] predicates = new Predicate[list.size()];
                return cb.or(list.toArray(predicates));


//specfication的一些其他用法
Specification<UserModel> spec = new Specification<UserModel>() {  
    public Predicate toPredicate(Root<UserModel> root,  
            CriteriaQuery<?> query, CriteriaBuilder cb) {  
        Predicate p1 = cb.like(root.get("name").as(String.class), "%"+map.getName()+"%");  
        Predicate p2 = cb.equal(root.get("id").as(Integer.class), map.getId());  
        Predicate p3 = cb.gt(root.get("age").as(Integer.class), map.getAge());  
        //把Predicate应用到CriteriaQuery中去,因为还可以给CriteriaQuery添加其他的功能,
        //比如排序、分组等  
        query.where(cb.and(p3,cb.or(p1,p2))); //根据需求灵活组合  
        //添加排序的功能  
        query.orderBy(cb.desc(root.get("uuid").as(Integer.class)));  
        return query.getRestriction();  
    }  
};

暂时就写这么多,当然还有很多的问题没有写出来,等下周有时间在写。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值