数据增删改查细节点,级联

最近想起来了数据增删改查的一些细节点操作,写出来做个记录吧

 

1.在增加查询或者修改数据时想默认添加一组数据的时候可以写下面的代码:

需求:只查询到state=1的数据

                      Specification<User> spec = new Specification<User>() {

                                 // root:取当前对象的属性.as(属性中的类型) query:order,group cb:or and equles from

                                 // User where state = 1

                                 @Override

                                 public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

                                        // TODO Auto-generated method stub

                                        return cb.equal(root.get("state").as(Integer.class), 1);

                                 }

                           };

                                                 

                           List<User> userList = UserService.find(spec);//查询语句

2.修改了部分数据保存时,常规写法会导致其他没有修改的数据为null  使用下面的写法

       //下面三段代码,可以避免修改后只修改自己修改了的数据,其他数据全为空,

             //我们先查询数据在给其封装数据,只修改封装的数据,其他的都不会变化

             User user = UserService.get(model.getId());先查询到要修改的数据的所有内容

             user.setDept(model.getDept()); 再把修改后的数据赋值到这里面进行覆盖

             user.getUserinfo().setName(model.getUserinfo().getName());

             user.setState(model.getState()); 

             

             

             UserService.saveOrUpdate(user);  最后调用修改方法修改即可

 

3.在通过对比数据后为某数据赋值;(一般写在service中)

需求:判断entity的id是否为新数据,如果为新数据给其的id赋值

UtilFuns.isEmpty(entity.getId()) :判断他是否为空。UtilFuns.isEmpty 的底层就是判断是否为空的,为空才会走这个方法

 

                    if(UtilFuns.isEmpty(entity.getId())){ // 判断修改或者新增

                                  // user和userinfo的主键一致  为了一对一主键关联

                                 String uid = UUID.randomUUID().toString();

                                 

                                 entity.setId(uid);

                                 entity.getUserinfo().setId(uid);

                           }else{

                                 

                           }

4.配置级联(需求:删除一个表的数据他后面与之关联的数据也会一起删除。)

     1.需要在applicationContext.xml中配置文件

      <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

             <property name="entityManagerFactory" ref="entityManagerFactory" />

       </bean>

5.要想级联删除,新增 一对一的表格要在配置一对一关系是要写上这么一句

      @OneToOne(cascade=CascadeType.ALL)   cascade=CascadeType.ALL:代表级联保存和删除

6.在实现类中,,,多个实现类都有相同的话可以把相同数据重新设立一个类,让其他类继承他就是了,

但是其他实现类要继承这个类的话,这个类的有一个implements Serializable  为了让其他类把这个类的主页也继承上,还需要写上一段注解@MappedSuperclass。如果不写会找出只继承了数据而继承不来他的注解。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿邱先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值