03 2022 档案
摘要:1.声明式事物 1.1 事物的回顾 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎! 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。 事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。 事务四个属性ACID 原子性(atom
阅读全文
摘要:抽象方法的实现类直接继承SqlSessionDaoSupport类 , 直接利用 getSqlSession() 获得 , 然后直接注入SqlSessionFactory . 比起方式1 , 不需要管理SqlSessionTemplate 测试: 1、将我们上面写的UserDaoImpl修改一下 p
阅读全文
摘要:spring-mybatis.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001
阅读全文
摘要:1 整合Mybatis 所需依赖 <dependencies> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <ar
阅读全文
摘要:1. AOP 1.1 什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用
阅读全文
摘要:1 代理模式 代理模式: 静态代理 动态代理 1.1 静态代理 角色分析: 抽象角色 : 一般使用接口或者抽象类来实现 真实角色 : 被代理的角色 代理角色 : 代理真实角色 ; 代理真实角色后 , 一般会做一些附属的操作 . 客户 : 使用代理角色来进行一些操作 . rent接口 public i
阅读全文
摘要:1. 使用java的方式配置Spring 实体类User // 这里的这个注解的意思,就是说明这个类被Spring托管了,注册到了容器中 @Controller public class User { // 属性的注入 @Value("cnfalltime") private String name
阅读全文
摘要:1.1说明 在spring4之后,想要使用注解形式,必须得要引入aop的包 在配置文件当中,还得要引入一个context约束 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sch
阅读全文
摘要:1.Bean的自动装配 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean。 Spring中bean有三种装配机制,分别是: 在xml中显式配置; 在java中显式配置; 隐式的bean发现机制和自动装配。 这里我们主要讲第三种:自动
阅读全文
摘要:1 bean的作用域 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 . 官方介绍 1.1 单例模式(Spring默认机制) 当一个bean的作用域为Singleton,那么Spring
阅读全文
摘要:1.依赖注入(DI) 依赖注入(Dependency Injection,DI)。 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 1.1 构造器注入 <bean id="user2" class="com.
阅读全文
摘要:1. Spring 配置 1.1 别名 <!-- 别名 : 如果添加了别名,我们也可以使用别名获取到这个对象 --> <alias name="User" alias="u1"></alias> 1.2 Bean的配置 <!-- id : bean的唯一标识符,相当于类名 class : bean
阅读全文
摘要:1. IOC创建对象方式 1.1 通过无参构造来创建 1、User.java public class User { private String name; public User() { System.out.println("user无参构造方法"); } public void setNam
阅读全文
摘要:1.2 IOC本质 控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控
阅读全文
摘要:1.1 分析实现 我们先用我们原来的方式写一段代码 . 1、先写一个UserDao接口 public interface UserDao { public void getUser(); } 2、再去写Dao的实现类 public class UserDaoImpl implements UserD
阅读全文
摘要:1.2 二级缓存 【官方声明】 ⇒ 如何开启【二级缓存】 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行: 在XML映射文件中添加以下代码,以开启【二级缓存】 <cache/> 【官方声明】 ⇒ 【二级缓存】的作
阅读全文
摘要:1.缓存 【官方声明】 MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进。 一级缓存(SqlSession级别) 二级缓存(mapper||namespace级别) 1.1 一级缓存
阅读全文
摘要:1.动态SQL 【官方声明】 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 使用动态
阅读全文
摘要:#关联的嵌套 Select 查询 1、关联 - association 【多对一】(实体类中包含关联对象) 2、集合 - collection 【一对多】(实体类中包含关联对象的集合) 3、JavaType & ofType 1、JavaType用来指定实体类中属性的类型 2、ofType用来指定映
阅读全文
摘要:模拟测试:一名老师有多名学生 ⇒ 【面向教师】 本质:使用<collection>标签完成一对多的输出 建立实体类 import lombok.Data; @Data public class Student { private int id; private String name; privat
阅读全文
摘要:模拟测试:多个学生对应一个老师 1、 MySQL测试表【Teachers】、【Students】 2、 测试实体类【Teachers】、【Students】 3、 dao层【TeachersMapper】、【StudentsMapper】 4、 XML映射文件【teachersMapper.xml】
阅读全文
摘要:MyBatis执行流程 本质:反射机制实现MyBatis三大类的创建 底层:使用动态代理接管dao层接口操作 执行流程:MyBatis工具类 ⇒ 【MyBatisUtils】,按照【官方使用步骤】: 获取核心配置文件【mybatis-config.xml】中的配置 try{ // 指定配置文件路径
阅读全文
摘要:####数据分页工具类-(原始) public class PageSupport { //当前页码-来自于用户输入 private int currentPageNo = 1; //总数量(表) private int totalCount = 0; //页面容量 private int page
阅读全文
摘要:####页面请求拦截 import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOExcep
阅读全文
摘要:####Java链接数据库配置-初始 import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; //操作数据库公共类 public class Bas
阅读全文
摘要:####maven资源过滤配置 <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>
阅读全文
摘要:####configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) mybatis-generator-core mybatis
阅读全文
摘要:1、持久化 数据持久化 持久化就是将程序的数据在持久状态和瞬时状态转化的过程 内存:断电即失 数据库(jdbc),io文件持久化 生活:罐头 为什么需要持久化? 有一些对象,不能让它丢失 内存太贵 理解: 1.在一定周期内保持不变就是持久化,持久化是针对时间来说的。 2.数据库中的数据就是持久化了的
阅读全文
摘要:【官方声明】 resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够
阅读全文
摘要:1、核心配置文件 mybatis-config.xml MyBatis 官方的配置文档结构如下: 2、环境配置(environments) MyBatis 可以配置成适应多种环境 不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。 学会使用配置多套运
阅读全文
摘要:####1.新建项目 新建一个普通的maven项目 删除src目录(作为父工程) 导入maven依赖 <dependencies> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-jav
阅读全文
摘要:####文件上传的前端必要参数 get方法上传文件有大小限制,post无限制 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head>
阅读全文
摘要:####没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用。 #####serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。 #####serializatio
阅读全文
摘要:####设置多线程让用户注册后立即得到反馈同时进行邮件发送功能 //邮件发送方法区设置为多线程,将方法体放入run方法中 //这里可以改为实现Runnable接口,避免单继承局限性,灵活方便,方便同一个对象被多个线程使用 public class SendMail extends Thread {
阅读全文
摘要:####数据分页功能 protected void query(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取入参 String queryName = req
阅读全文
摘要:####详细代码 //操作数据库公共类 public class BaseDao { private static String driver; private static String username; private static String password; private stati
阅读全文
摘要:###问题:List list= new ArrayList list只是ArrayList的接口不是它的父类 ,不是父类引用指向子类对象 接口怎么创建对象了?接口是没有构造方法的! 编程思想 里面这么解释接口,:interface是特殊的抽象类 人话:接口可以看成是个类,这样一切就解释的通了 ##
阅读全文
摘要:简单概念:要么都成功,要么都失败 ACID原则:保证数据的安全 开启事务 事务提交 commit() 事务回滚 rollback() 关闭事务 转账: A:1000 B:1000 A(900) 100--> B(1100) Junit单元测试 依赖 <dependency> <groupId>jun
阅读全文
摘要:什么是jdbc:java连接数据库! 需要jar包的支持: java.sql javax.sql mysql-connection-java...(连接驱动) ###数据库依赖创建 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http
阅读全文
摘要:27.Filter实现权限拦截 登录页面login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <for
阅读全文
摘要:##1.Forward与sendredirect根本性质 Forward是在服务器端的跳转,就是客户端一个请求发给服务器,服务器直接将请求相关的参数的信息原封不动的传递到该服务器的其他jsp或servlet去处理,而sendredirect是在客户端的跳转,服务器会返回给客户端一个响应报头和新的UR
阅读全文
摘要:###1.实现一个监听器的接口(有N种)具体看继承哪个监听器接口 ###实例一:监听session个数确定网站访问人数 //监听器配置 public class OnlineCountListener implements HttpSessionListener { //session创建监听 //
阅读全文
摘要:filter开发步骤 导包 编写过滤器 包不要导入错误了 import javax.servlet.Filter; 实现Filter接口,重写对应的方法即可 web.xml中配置过滤器 chain.doFilter将请求转发给过滤器链下一个filter , 如果没有filter那就是你请求的资源 #
阅读全文
摘要:1.九大内置对象 PageContext【存东西】 Request 【存东西】 Response Session【存东西】 Application(ServletContext)【存东西】 config(ServletConfig) out page 【基本用不到】 exception 新建page
阅读全文
摘要:源码 ###例子 footer.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <h1>我是Footer</h1> header.jsp <%@ page contentType="text/html;cha
阅读全文
摘要:session和cookie的区别 cookie是把用户的数据写给浏览器,浏览器保存(可以保存多个); session是把用户的数据写到用户独占的session中,服务器端保存(保存重要的信息,避免服务器的资源浪费); session由服务器创建 ###简单例子 public class Sessi
阅读全文
摘要:3.Cookie 从请求中拿到cookie信息 服务器响应给客户端cookie Cookie[] cookies = req.getCookies();//获取cookie cookie.getName();//获取cookie中的key cookie.getValue();//获取cookie中的
阅读全文
摘要:###模拟登录 public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servle
阅读全文
摘要:###下载文件 public class FileServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servlet
阅读全文