SpringBoot(4)

今日目标

  • 事务处理

概念介绍

什么是事务处理?

事务处理就是要保持数据库的安全性。

事务要么完全地执行,要么完全地不执行。

事务处理可以确保除非事务性单元内的所有操作都成功完成。

IDEA操作

事务处理

第一步

事务处理是保持数据库的安全性的一种处理方法,所以SpringBoot中,要部署好了Mybatis和MybatisGenerator。

SpringBoot中要完成xml,properties,dao,entity,mapper/*.xml,mybatisGeneratorConfig.xml的配置,可以参考上面的文章。

底层的数据库和表也要建好。

image.png
第二步

事务一般不放在controller文件夹中,新建src/main/java/com/example/demo/service/TransactionTestService.java,代码如下:

package com.example.demo.service;

import com.example.demo.dao.UserDao;
import com.example.demo.entity.User;
import com.sun.org.apache.xpath.internal.operations.Bool;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;


@Service
public class TransactionTestService {
    @Resource
    UserDao userDao;
    public Boolean test1(){
        User user=new User();
        user.setPassword("test1-password");
        user.setName("test1");
        userDao.insertUser(user);
        System.out.println(1/0);
        return true;
    }
    @Transactional
    public Boolean test2(){
        User user=new User();
        user.setPassword("test2-password");
        user.setName("test2");
        userDao.insertUser(user);
        System.out.println(1/0);
        return true;
    }
}

可以看到test1和test2函数的区别就在于一个有@Transactional,一个没有。

这也就决定了一个可以test1的插入可以执行,是不安全的。

test2是事务性的,数据库表中不会出现name=test2的数据。

第三步

编写TransactionTestController.java,代码如下:

package com.example.demo.controller;

import com.example.demo.service.TransactionTestService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
public class TransactionTestController {
    @Resource
    private TransactionTestService transactionTestService;
    @GetMapping("/transactionTest")
    @ResponseBody
    public String transactionTest(){
        transactionTestService.test1();
        transactionTestService.test2();
        return "done";
    }
}

通过访问/transactionTest执行test1方法和test2方法。

第四步

访问localhost:8080/transactionTest会发现报错,不过只观察数据库中的变化就可以了。

image.png

可以发现:test1中即使发生了错误,数据还是被插入了。而test2中发生了错误,事务回滚,插入没有执行。

Ajax

Ajax 技术使得网站与用户间有了更友好的交互效果,比较常见的借助 Ajax 技术实现的功能有列表上拉加载分页数据、省市区三级联动、进度条更新等等,这些都是借助 Ajax 技术在当前页面即可完成的功能,即使有数据交互也不会跳转页面,整体交互效果有了很大的提升。

RESTful

目前比较流行的一套接口规范就是 RESTful api,REST(Representational State Transfer),中文翻译叫"表述性状态转移"

重温Bootstrap和JQuery

敬请期待

AdminLTE

可能要做一些SpringBoot实操教程的改变了,像我这样的初学者还是应该跟着教程然后一步一步来

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人积累,请勿私自转载,转载前请联系代码及文章资源https://github.com/jedyang/DayDa...
    运维开发笔记阅读 481评论 0 0
  • 简书停更 本人主要在头条号写文章,可以关注我的头条号【happyjava】,或者收藏我的个人博客happy的博客b...
    哈皮呀阅读 1,287评论 1 18
  • 茶室, 好似一幅浓墨重彩的山水画。 在家中辟出一方小小茶室, 沏一杯清茶,就一缕茗香, 与朋友酣畅对谈,闲话家常,...
    妙喜文人紫砂阅读 161评论 0 0
  • 亲爱的愿望树家人们,大家早上好!感谢大家在百忙之中抽出时间参加孩子的期末家长会!我是愿望树教室的守护人尹泽媛老师。...
    尹泽媛阅读 633评论 0 1
  • 今天早晨,吃过早饭后,我去楼下如厕。可为也跟着我一同下来了。突然,我听到可为大喊:“妈妈,快来救我啊!”我从卫生间...
    惜言001阅读 192评论 0 1