随笔分类 - Java
在Mybatis中不对select做任何改变,将物理删除的逻辑迁移到逻辑删除
摘要:假设现在有一个已经完成或者已经到中期的项目,但是忘记做逻辑删除了,更改的办法如下 第一步,在项目中添加如下的拦截器 import com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.ex
脏读、幻读与不可重复读
摘要:数据库事务特征 数据库事务特征,即 ACID: A Atomicity 原子性 事务是一个原子性质的操作单元,事务里面的对数据库的操作要么都执行,要么都不执行, C Consistent 一致性 在事务开始之前和完成之后,数据都必须保持一致状态,必须保证数据库的完整性。也就是说,数据必须符合数据库的
spring propagation
摘要:spring事务传播属性示例分析 在TransactionDefinition类中,spring提供了6种传播属性,接下来分别用简单示例来说明。 温馨提醒:下文提到的加入当前事务,指的是底层使用同一个Connection,但是事务状态对象是可以重新创建的,并不影响。文章提到的当前只存在一个事务,表示
spring propagation required和not required
摘要:一、Propagation取值: REQUIRED(默认值):在有transaction状态下执行;如当前没有transaction,则创建新的transaction; SUPPORTS:如当前有transaction,则在transaction状态下执行;如果当前没有transaction,在无t
mysql自增id不连续问题
摘要:MySQL在navicat中设置唯一字段: 索引(选择字段) >>> 索引类型(UNIQUE) 当表中存在唯一字段,主键id自增时,插入新数据的时候唯一字段已存在,插入失败 但此时id已自增+1,再次插入数据造成id不连续问题。 或是删除字段后又插入,删除字段后,自增字段不会补齐而是按照既定数值继续
@Before,@After,@AfterReturning,@AfterThrowing执行顺序
摘要:注意! 从Spring5.2.7开始,在相同@Aspect类中,通知方法将根据其类型按照从高到低的优先级进行执行:@Around,@Before ,@After,@AfterReturning,@AfterThrowing。 顺序为(类似于栈的执行顺序,进入时高优先级先执行,退出时低优先级先执行)
spring的四种属性
摘要:注解含义 @Component 最普通的组件,可以被注入到spring容器进行管理 @Repository 作用于持久层 @Service 作用于业务逻辑层 @Controller 作用于表现层(spring-mvc的注解) @Controller注解类进行前端请求的处理,转发,重定向。包括调用Se
动态代理各种方法比较
摘要:前言 代理模式是一种设计模式,能够使得在不修改源目标的前提下,额外扩展源目标的功能。即通过访问源目标的代理类,再由代理类去访问源目标。这样一来,要扩展功能,就无需修改源目标的代码了。只需要在代理类上增加就可以了。 其实代理模式的核心思想就是这么简单,在java中,代理又分静态代理和动态代理2种,其中
动态代理
摘要:动态代理 利用Java的反射技术(Java Reflection),在运行时创建一个实现某些给定接口的新类(也称“动态代理类”)及其实例(对象),代理的是接口(Interfaces),不是类(Class),也不是抽象类。在运行时才知道具体的实现,spring aop就是此原理。 public sta
@Autowire @Resource @Qualifier
摘要:@Autowired、@Qualifier、@Resource、@Value四个注解都是用于注入数据的,他们的作用就和在xml配置文件中的bean标签中写一个标签的作用是一样的 1、先给出一个场景 讲@Autowired注解前先给出一个场景: dao层代码 @Repository public cl
scope的值
摘要:spring作用域 <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/> 这里的 scope 就是用来配置 spring bean 的作用域,它标识 bean 的作用域。 1、singleton 当一个be
BeanFactory和FactoryBean
摘要:BeanFactory 先来说说BeanFactory。用于访问Spring bean容器的根接口。这是Spring bean容器的基本客户端视图。原来是获取Spring Bean的接口,也就是IoC容器。然后我们看类图。 原来我们更常用的ApplicationContext就是一个BeanFact
jstl c:foreach varStatus
摘要:varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。就拿varStatus=“status”来说,事实上定义了一个status名的对象作为varStatus的绑定值。该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素
EL表达式内置对象
摘要:pageScope 获取 page 范围的变量 requestScope 获取 request 范围的变量 sessionScope 获取 session 范围的变量 applicationScope 获取 application 范围的变量 param 相当于 request.getParamet
页面域、请求域、会话域、应用域
摘要:四个作用域的特点 页面域(page scope): 仅限于当前用户请求的页面,只对当前页面jsp起作用。 请求域(request scope): 仅限于当前请求过程,包括转发(forward)或被包含(include)的情况。 会话域(session scope): 限于当前会话,也就是当前当前服务
PreparedStatement问号的问题
摘要:Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "select ?, ?, ? from dept"
Servlet中的各种路径
摘要:getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。 getPathInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分 getContextPath():获取项目
防止SQL注入
摘要:方案一:采用预编译技术 INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?) 使用预编译的SQL语句(PreparedStatement),SQL语句的语义不会是不会发生改变的。预编译语句在创建的时候就已经将指定的SQL语
请求转发和重定向的区别
摘要:请求转发是一个请求一次响应 重定向是两次请求两次响应。 一、转发 转发是指当前Servlet将请求转交给其他的Servlet进行再次处理,转发特点: 转发时浏览器只发送1次请求 转发是在服务器端进行的 转发时浏览器的地址栏没有发生改变 浏览器感知不到转发的发生 二、重定向 重定向是Servlet发送
request转发问题
摘要:请求转发:由下一个Servlet完成响应体,当前Servlet可以设置响应头(留头不留体)。举个例子,AServlet请求转发到BServlet,那么AServlet不能够使用response.getWriter() 和response.getOutputStream() 向客户端输出响应体,但可以