JAVA
文章平均质量分 62
Java
kkzz1x
真.新手起步
Java + CPP + Rust(新人),计算机科学热爱者
展开
-
2022-1-30 SpringBoot day2 属性注入
文章目录一、Maven工程结构问题二、SpringBoot的parent三、banner四、Web容器基本配置一、Maven工程结构问题可以是父模块和子模块同级,也可以父子关系打包的时候在根下打包如果子模块需要一起打包 module选项;否则可以单独打包resources-resource节点则用来定义资源目录二、SpringBoot的parent定义Java的编译版本定义项目编码格式定义依赖的版本号项目打包配置自动化的资源过滤自动化的插件配置三、banner就是启动原创 2022-02-01 21:06:16 · 590 阅读 · 0 评论 -
2022-1-29 SpringBoot day1细节
文章目录一、配置类注解二、启动类详解一、配置类注解@Configuration vs @Component@Configuration//配置类 那么以下bean都会被代理 Configuration 对于已经创建的对象就不会再被创建了//如果不想被代理 那么@Component二、启动类详解这个MainApplication启动类放到根包目录下,这样才能扫描到组件@SpringBootApplication@SpringBootConfiguration@EnableAutoCo原创 2022-01-29 23:45:00 · 470 阅读 · 0 评论 -
2022-1-29 开始SpringBoot&自动配置原理
文章目录一、helloworld二、自动配置原理1. SpringBoot特点1.1 依赖管理1.2 自动配置2. 容器功能组件添加配置绑定一、helloworld官方文档创建maven工程引入parent和依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</art原创 2022-01-29 21:52:07 · 679 阅读 · 0 评论 -
2022-1-24 SSM整合
一、依赖和创建web工程<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apach原创 2022-01-27 00:08:36 · 329 阅读 · 0 评论 -
2022-1-23 MyBatis插件开发
文章目录一、自定义MyBatis插件二、自定义MyBatis分页插件一、自定义MyBatis插件 @Test void testBook() { sqlSession= SqlSessionFactoryUtils.getInstance().openSession(); BookMapper mapper = sqlSession.getMapper(BookMapper.class); List<Map<String,原创 2022-01-24 17:17:19 · 769 阅读 · 0 评论 -
2022-1-22 MyBatis 鉴别映射器、自定义类型转换器、缓存
文章目录一、discriminator 动态地选择映射二、自定义类型转换器数据插入表从表中读数据三、MyBatis 一级缓存四、MyBatis二级缓存根据查询出来的值的类型,选择不同的映射器。根据查询结果动态选择。一、discriminator 动态地选择映射根据enabled字段的值选择不同的映射器<!--如果结果是1,就映射到resultMap上来,column是判断的字段(这个映射可以动态变)--> <resultMap id="UserMapWithRole3"原创 2022-01-22 23:46:42 · 376 阅读 · 0 评论 -
2022-1-21 MyBatis 查询进阶
文章目录一、查询结果一对一映射二、查询结果一对一映射(懒加载)三、一对多查询四、一对多查询(懒加载)一、查询结果一对一映射eg.在查article顺便也把author对象的值查出来。方法一:为了让*里关于author的属性自动映射到author中去,需要这样写:SELECT a.*,au.id as "author.id",au.`name` as "author.name",au.age as "author.age" FROM article a,author au where a.aid=原创 2022-01-22 20:25:53 · 335 阅读 · 0 评论 -
2022-1-21 MyBatis 动态sql
一、动态SQL之if <select id="getAccountByScope" resultMap="AccountMap" > select * from account <if test="start!=null and size!=null"> limit #{start},#{size} </if> </select>如果有参数,原创 2022-01-21 14:02:09 · 589 阅读 · 0 评论 -
2022-1-20 MyBatis 主键回填&resultType
一、主键回填(2种)插入后如何获取id??方法一:<insert> 中添加属性 useGeneratedKeys=“true” keyProperty=“id”这样打印出的account的对象就带有id值了。 <insert id="addAccount" parameterType="org.kk.mybatis02.model.Account" useGeneratedKeys="true" keyProperty="id"> insert into原创 2022-01-20 21:35:11 · 1051 阅读 · 1 评论 -
2022-1-20 MyBatis crud&细节parameterType
一、insertselectKey在sql语句前面执行(BEFORE)先执行mysql里的select uuid(); 赋值给id属性,然后执行sql插入语句(主键回填?) <insert id="addAccount" parameterType="org.kk.mybatis01.model.Account" > <selectKey resultType="java.lang.String" keyProperty="id" order="BEFORE原创 2022-01-20 18:57:55 · 617 阅读 · 0 评论 -
2022-1-19 MyBatis day1 简介
一、简介MyBatis通过xml或注解的方式将执行的各种statement配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。Mybatis没有将Java对象和数据库表关联起来,而是将Java方法和SQL语句关联。(需要手动创建对象,表,然后关联起来)好处是可以充分利用数据库各种功能。执行结果自动映射成对象,集合等。二、添加依赖: <dependencies>原创 2022-01-19 23:27:43 · 523 阅读 · 0 评论 -
2022-1-18 SpringMVC RESTful接口、静态资源访问和拦截器
一、RESTful资源一个资源用URI来定位表现层资源呈现出来的形式,就是表现层比如:文本可以用txt表现,也可以用html,xml,json形式表现URI只代表资源的实体,不代表资源的形式。它的具体表现形式,应该在http请求头中的Accept,Context-Type字段指定,这两个字段才是对“表现层”的描述状态转化客户端通过四个HTTP动词,对服务器端资源进行操作,进行资源转化(GET获取资源,POST新建or更新资源,PUT更新资源,DELETE)二、@RestC原创 2022-01-18 19:56:59 · 471 阅读 · 0 评论 -
2022-1-18 SpringMVC 数据回显和JSON处理
数据交错了,如果没有回显,需要重新填写。(AJAX没有这个问题,如果用表单填写则需要处理)原创 2022-01-18 15:11:34 · 1068 阅读 · 0 评论 -
2021-1-17 SpringMVC 全局异常处理与数据校验
一、全局异常处理项目中,可能会抛出多个异常,我们不可以直接将异常的堆栈信息展示给用户:用户体验不好不安全针对异常,可以自定义异常处理。比如说文件超限:可以使用@ControllerAdvice 注释类,这是一个增强版Controller,主要用来做增强版数据处理@ControllerAdvice//在该注解下定义方法处理异常public class ExceptionHandle { @ExceptionHandler(Exception.class) //处理什么异常原创 2022-01-17 23:41:13 · 418 阅读 · 0 评论 -
2022-1-17 SpringMVC 文件上传
文章目录一、概述二、CommonsMultipartResolver一、概述Spring3.1开始,对于文件上传,提供了两个处理器CommonsMultipartResolver (需要添加commons-fileuload依赖 兼容性较差)StandardServletMultipartResolver (适用于Servlet3.0以后的版本 不依赖第三方工具)二、CommonsMultipartResolver配置好springmvc环境后,添加依赖 <depend原创 2022-01-17 16:37:13 · 252 阅读 · 0 评论 -
2022-1-16 SpringMVC day2(Controller细节)
文章目录一、@RequestMapping1. 配置url2. 请求窄化3. 请求方法限定二、Controller中接口方法各种返回值类型1. 返回ModelAndView2. 返回void3. 返回字符串一、@RequestMapping1. 配置url这个注解用来标记一个接口。用法:@RequestMapping("/hello")@RequestMapping({"/hello","/hello2"}) 少见…——可以配置多个路径2. 请求窄化在类上进行注解RequestMappin原创 2022-01-16 22:27:16 · 222 阅读 · 0 评论 -
2022-1-15 SpringMVC day1(概览)
文章目录一、SpringMVC组件二、项目创建三、实际使用一、SpringMVC组件DispatcherServlet(controller)调用其他组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性HandlerMapping 处理器映射器负责根据用户请求找到Handler。不同的映射器实现不同映射方式:配置文件方式、实现接口方式、注解方式Handler 控制器后端控制器 对用户请求进行处理HandlerAdapter 处理器适配器对处原创 2022-01-15 22:53:20 · 158 阅读 · 0 评论 -
2021-12-29 Spring day5(JdbcTemplate)
文章目录JdbcTemplateSpring事务JdbcTemplateJdbcTemplate是Spring利用Aop思想封装的JDBC操作工具。在操作数据库的时候,只需要用jabcTemplate即可package org.kk.jdbc;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.spri原创 2021-12-29 15:27:53 · 586 阅读 · 0 评论 -
2021-12-28 Spring day4(动态代理,Aop五种通知)
一、AopAspect Oriented Programming ,面向切面编程,这是对面向对象思想的一种补充。面向切面编程,就是在程序运行时,不改变程序源码的情况下,动态的增强方法的功能,常见的使用场景非常多:日志事务 --公共代码抽取出来数据库操作…以上操作有很多模板化的代码AOP常见概念切点:要添加代码的地方,称作切点通知(增强):通知就是向切点动态添加的代码切面:切点+通知连接点:切点的定义AOP实现Aop实际上是基于Java的动态代理来实现的Java中的动态代理有原创 2021-12-28 19:55:10 · 323 阅读 · 0 评论 -
2021-12-27 Spring day3(多环境切换,Aware接口)
一、多环境切换开发中如何在 开发、生产、测试环境之间进行快速切换spring Profile(底层是条件注解)package org.kk2.ioc;import org.springframework.stereotype.Service;/** * @program: ioc01 * @description: * @author: zjx * @create: 2021-12-27 20:01 **/public class DataSource { privat原创 2021-12-27 22:29:32 · 158 阅读 · 0 评论 -
2021-12-26 Spring day2(Bean注册到容器;自动配置)
文章目录一、loc-基本属性注入1. 构造方法注入2. set方法注入(常用)3. p名称 空间注入4.外部Bean的注入二、复制属性注入1. 对象注入2. 数组、集合、map、properties注入三、Java配置三、自动化配置批量注册对象注入条件注解一、loc-基本属性注入1. 构造方法注入直接指定参数名注入 name="?" id="?"数量要与构造方法一一对应 <bean class="org.kk.ioc.model.User " id="user">原创 2021-12-26 20:42:12 · 476 阅读 · 0 评论 -
2021-12-26 Spring day1(maven+IocBean获取)
文章目录写在前面:maven配置问题一、概念二、环境配置三、目录结构以及IDEA下配置Maven环境前两天都在配maven,本身流程很简单,但最终error一堆的原因是网络。。。。写在前面:maven配置问题如图: 就是plugins装不上,而且把mirror改为aliyun后彻底爆红(默认仓库则蜗牛爬式正常下载)Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central原创 2021-12-26 13:38:24 · 310 阅读 · 0 评论 -
2021-11-14 JDBC-ApacheDBUtils实现CRUD
commons-dbutils是Apache组织提供的一个开源JDBC工具类库,对JDBC封装。runner.update (conn,sql,args)runner.query(conn,sql,handler,args)handler用来接收查询结果(接口为ResultSetHandler)public class QueryRunnerTest { @Test public void testInsert() { Connection conn=nul原创 2021-11-15 14:34:32 · 692 阅读 · 0 评论 -
2021-11-10 JDBC-数据库连接池
文章目录一、数据库连接池的必要性二、数据库连接池技术三、C3P0数据库连接池的两种实现方式一、数据库连接池的必要性传统模式:主程序(servlet、beans)中建立数据库连接进行sql操作断开数据库连接存在问题:数据库的连接资源没有得到很好的重复利用对于每一次数据库链接,使用完后都得断开(否则可能内存泄露)这种开发不能控制被创建的连接对象数。 系统资源会被毫无顾及地分配出去,如果连接过多,也可能导致内存泄露,服务器崩溃。java中内存泄露? 内存中有对象,没有及时被回收二、数原创 2021-11-14 23:39:58 · 911 阅读 · 0 评论 -
2021-11-10 JDBC-DAO类
未优化先写一个DAO的基类,声明为抽象类,无法用它来生成对象import com.atguigu3.util.JDBCUtils;import java.lang.reflect.Field;import java.sql.*;import java.util.ArrayList;/** * 封装了针对数据表的通用操作 * * 声明为抽象类 不能造对象 * **/public abstract class BaseDAO { //通用增删改 2.0 public原创 2021-11-10 10:09:34 · 116 阅读 · 0 评论 -
2021-11-9 JDBC-数据库事务2
文章目录一、事务的ACID属性二、四种隔离级别一、事务的ACID属性原子性atomicity原子性是事务一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生一致性consistency事务必须使数据库从一个一致性状态变换到另外一个一致性状态隔离性 isolation事务的隔离性指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰持久性 durability持久性指一个事务一旦被提交,它对数据原创 2021-11-09 22:54:49 · 356 阅读 · 0 评论 -
2021-11-8 JDBC-数据库事务1
文章目录一、引入场景二、数据库事务介绍一、引入场景 /** * 针对于数据表user_table来说: * AA给BB转账100 * * update user_table set balance=balance-100 where user="AA"; * update user_table set balance=balance+100 where user="BB"; * **/ @Test public void原创 2021-11-08 22:53:09 · 62 阅读 · 0 评论 -
2021-11-8 JDBC PreparedStatement-操作BLOB,批量数据
BLOB是一个二进制大型对象,是一个可以存储大量数据的容器。插入BLOB类型数据必须使用PreparedStatement,因为BLOB类型的数据时无法使用字符串拼接写的。四种BLOB:TinyBlob 最大255字节;Blob 65K;MediumBlob 16M;LongBlob 4G...原创 2021-11-08 15:50:40 · 552 阅读 · 0 评论 -
2021-11-7JDBC-PreparedStatementCRUD
一、修改表把建立连接操作和关闭资源操作都封装到了包中@Test public void testUpdate() throws Exception { //1.获取数据库连接 Connection conn=JDBCUtils.getConnection(); //2.预编译sql语句,返回PreparedStatement的实例 String sql="update customers set name= ? where id=原创 2021-11-07 22:14:45 · 384 阅读 · 0 评论 -
2021-11-04 JDBC获取数据库连接
JDBC: Java数据库连接(Java DataBase Connectivity)一、获取数据库连接import org.junit.Test;import java.sql.Connection;import java.sql.Driver;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;public class ConnectionTest { @原创 2021-11-06 23:17:05 · 114 阅读 · 0 评论 -
2021-11-02 Java学习(Lambda表达式)
一、Java8新特性简介速度更快代码更少(Lambda表达式)强大的Stream API便于并行最大化减少空指针异常:OptionalNashorn引擎,允许在JVM上运行JS应用二、Lambda表达式import org.junit.Test;import java.util.Comparator;public class LambdaTest { @Test public void test1() { Runnable r1=new R原创 2021-11-02 22:30:34 · 76 阅读 · 0 评论 -
2021-11-1 Java学习(动态代理)
一、代理设计模式的原理使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。静态代理:特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。最好可以通过一个代理类完成全部的代理功能。动态代理是指客户通过代理类来调用其他对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。使用场合:调试/远程方法调用原创 2021-11-02 21:44:21 · 148 阅读 · 0 评论 -
2021-10-31 Java学习(反射)
一、一个使用反射的例子Person类:import java.io.Serializable;public class Person implements Serializable { private String name; public int age; public static final long serialVersionUID=82349802L; public String getName() { return name; }原创 2021-11-01 14:36:55 · 89 阅读 · 0 评论 -
2021-10-30 Java学习(网络编程)
文章目录一、InetAddress类二、实现TCP的网络编程客户端发送内容给服务端,服务端将内容打印到控制台上一、InetAddress类import java.net.InetAddress;import java.net.UnknownHostException;//实例化InetAddress的两个方法:getByName(String host),getLocalHost()public class InetAddressTest { public static void ma原创 2021-10-30 14:43:39 · 277 阅读 · 0 评论 -
2021-10-29 Java学习(随机存取文件流,NIO)
文章目录RandomAccessFile类NIORandomAccessFile类直接继承于Object类,并且实现了DataInput、DataOutput两个接口,意味着这两个类既可以读也可以写支持随机访问的方式,程序可以直接跳到文件任意地方来读、写文件。支持只访问文件的部分内容可以在已存在的文件后追加内容RandomAccessFile对象包含一个记录指针,标识当前读写处的位置,此类对象可以自由移动记录指针:long getFilePointer():获取文件记录的当前位置voi原创 2021-10-29 22:33:38 · 134 阅读 · 0 评论 -
2021-10-28 Java学习(对象流)
处理流之对象流ObjectInputStream,ObjectOutputStream用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。序列化:用ObjectOutputStream类保存基本类型数据或对象的机制反序列化:用ObjectInputStream类读取基本类型数据或对象的机制不能序列化static和transient修饰的成员变量(所以一个类中要是有属性不想被序列化,那就贴上这俩个标签吧~)import原创 2021-10-28 23:04:22 · 88 阅读 · 0 评论 -
2021-10-22 Java学习(File&&IO流)
文章目录一、File类-实例化二、File类-常用方法一、File类-实例化File类的三种构造器: public void test1() { //构造器1 File file=new File("hello.txt"); // 用绝对路径也要用双反斜杠(表示不是转义) //路径分隔符 :windows: \\ unix:/ System.out.println(file); //构造器原创 2021-10-22 23:31:58 · 84 阅读 · 0 评论 -
2021-10-20 Java学习(泛型)
文章目录一、定义泛型类二、子类继承三、细节补充四、泛型方法五、使用通配符一、定义泛型类public class Order<T> { String orderName; int orderId; //类的内部结构就可以使用泛型 T orderT; public Order(){} public Order(String orderName,int orderId,T orderT) { this.orderNam原创 2021-10-20 22:06:55 · 256 阅读 · 1 评论 -
2021-10-18 Java学习(集合)
文章目录HashMap的底层实现原理?HashMap的存储结构(jdk1.8前)HashMap的存储结构 JDK1.8PropertiesHashMap的底层实现原理?以jdk7为例进行说明。HashMap map=new HashMap()在实例化之后,底层创建了长度是16的一维数组Entry[] table…执行过多次putmap.put(key1,value1):首先,调用hashCode()计算key1哈希值,此哈希值经过某种算法计算后,得到在Entry数组中的存放位置。如果此位置上原创 2021-10-18 14:42:16 · 64 阅读 · 0 评论 -
2021-10-17 Java学习(注解)
文章目录一、注解(Annotation)二、自定义注解三、JDK中的元注解一、注解(Annotation)注解概述(5.0时增加 )常见注解示例文档注解在编译时进行格式检查(三个基本注解)Override,Deprecated(忽略过时功能),SuppressWarnings(抑制编译器警告)Override 在编译的时候会进行校验,看这个方法是不是重写方法,防止写错跟踪代码依赖性,实现替代配置文件功能自定义注解JDK中的元注解利用反射获取注解信息JDK8中注解新特性注解原创 2021-10-17 10:59:33 · 64 阅读 · 0 评论