四
今日目标
- 事务处理
概念介绍
什么是事务处理?
事务处理就是要保持数据库的安全性。
事务要么完全地执行,要么完全地不执行。
事务处理可以确保除非事务性单元内的所有操作都成功完成。
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
网友评论