自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Spring——声明式事务

声明式事务回顾事务事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎!事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。事务四个属性ACID原子性(atomicity)事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用一致性(consistency)一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状态中隔离性

2020-11-22 10:59:52 145

原创 spring-整合mybatis

整合MyBatis步骤1、导入相关jar包junit<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version></dependency>mybatis<dependency> <groupId>org.mybatis&

2020-11-21 20:51:02 148 1

原创 spring-aop

什么是AOPAOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。Aop在Spring中的作用提供声明式事务;允许用户自定义切面以下名词需要了解下:横切关注点:跨越应用

2020-11-21 14:34:24 185

原创 Spring—使用注解开发

使用注解开发说明在spring4之后,想要使用注解形式,必须得要引入aop的包在配置文件当中,还得要引入一个context约束<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context

2020-11-19 21:31:49 159

原创 spring-注解实现自动装配

使用注解jdk1.5开始支持注解,spring2.5开始全面支持注解。Car 类package com.lyh.pojo;public class Car {public void shout(){ System.out.println("喵喵");}}Dog类package com.lyh.pojo;public class Dog { public void shout(){ System.out.println("汪汪"); }}

2020-11-19 17:06:19 153

原创 spring-自动装配

Bean的自动装配自动装配说明自动装配是使用spring满足bean依赖的一种方法spring会在应用上下文中为某个bean寻找其依赖的bean。Spring中bean有三种装配机制,分别是:1.在xml中显式配置;2.在java中显式配置;3.隐式的bean发现机制和自动装配。这里我们主要讲第三种:自动化的装配bean。Spring的自动装配需要从两个角度来实现,或者说是两个操作:1.组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean;

2020-11-18 22:57:53 248 1

原创 spring-依赖注入(DI)

概念依赖注入(Dependency Injection,DI)。依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 .+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++构造器注入在上一期博客Set 注入 (重点)要求被注入的属性 , 必须有set方法 , set方法的方法名由set +

2020-11-18 16:22:36 183

原创 spring-上手spring

1.导入Jar包注 : spring 需要导入commons-logging进行日志记录 . 我们利用maven , 他会自动下载对应的依赖项 .<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.10.RELEASE</version></

2020-11-17 22:48:08 106

原创 spring-概述及IOC理论推导

简介Spring : 春天 —>给软件行业带来了春天2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术官网 : http://spring.io/官方下载地

2020-11-17 19:38:14 142 1

原创 mybatis-缓存

简介1、什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。2、为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。3、什么样的数据能使用缓存?经常查询并且不经常改变的数据。Mybatis缓存MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。MyBatis系统

2020-11-15 20:10:35 80

原创 mybatis-动态sql

什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句.官网描述:MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种

2020-11-15 11:41:16 99

原创 mybatis-一对多

一对多的理解:一个老师拥有多个学生如果对于老师这边,就是一个一对多的现象,即从一个老师下面拥有一群学生(集合)!1.实体类编写Student 类package com.lyh.pojo;public class Student { private String name; private int id; private int tid; public Student(String name, int id, int tid) { this.n

2020-11-13 23:44:35 156

原创 mybatis-多对一的处理

多对一的处理多对一的理解:多个学生对应一个老师如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师!数据库设计CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师')

2020-11-12 23:57:00 227

原创 mybatis-利用注解开发

利用注解开发mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是,Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建sql 类型主要分成 :@select ()@update ()@Insert ()@delete ()注意:利用注解开发就不需要mapper.xml映射文件了 .1、我们在我们的接口中添加注解package com.lyh.dao;impo

2020-11-11 21:57:02 138 1

原创 mybatis-分页

思考:为什么需要分页?在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。使用Limit实现分页#语法SELECT * FROM table LIMIT stratIndex,pageSizeSELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 #为了检索从某一个偏移量到记录集的结束所有的记录行

2020-11-11 15:44:30 74

原创 mybatis-日志工厂

日志工厂思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题。对于以往的开发过程,我们会经常使用到debug模式来调节,跟踪我们的代码执行过程。但是现在使用Mybatis是基于接口,配置文件的源代码执行过程。因此,我们必须选择日志工具来作为我们开发,调节程序的工具。Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:SLF4JApache Commons

2020-11-09 15:29:28 147

原创 mybatis-ResultMap

要解决的问题:属性名和字段名不一致属性名和字段名不一致时查询的数据为null1、查看之前的数据库的字段名2、Java中的实体类设计public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样! //构造 //set/get //toString()}3、接口根据idpackage com.

2020-11-09 10:08:50 121

原创 mybatis生命周期和作用域

作用域(Scope)和生命周期理解我们目前已经讨论过的不同作用域和生命周期类是至关重要的,因为错误的使用会导致非常严重的并发问题。我们可以先画一个流程图,分析一下Mybatis的执行过程!作用域理解SqlSessionFactoryBuilder 的作用在于创建 SqlSessionFactory,创建成功后,SqlSessionFactoryBuilder 就失去了作用,所以它只能存在于创建 SqlSessionFactory 的方法中,而不要让其长期存在。因此 SqlSessionFactor

2020-11-08 22:04:02 115

原创 mybatis配置解析

此时最好打开https://mybatis.org/mybatis-3/zh/configuration.html1.核心配置文件mybatis-config.xml 系统核心配置文件MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。能配置的内容如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plug

2020-11-08 16:03:46 175

原创 mybatis的增删改查

在配置好mybatis的基本内容后我们对数据库的更改只需在三个文件中做更改(三个文件分别为UserMapper,UserMapper.xml和UserDaoTset)其中在UserMapper.xml中:配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!selectselect标签是mybatis中最常用的标签之一select语句有很多属性可以详细配置每一条SQL语句1.id:就是对应namespace的方法名;2.resultType:sql语句执

2020-11-07 16:51:17 130

原创 mybatis

MyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github

2020-11-06 22:18:57 123

原创 Statement数据库操作接口

1、创建 Statement 对象:建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法createStatement 创建,如下列代码段中所示package JDBC;//导入包import com.mysql.cj.protocol.Resultset;import javax.xml.transform.Result;import java.sql.Connection;import java.sql.DriverMana

2020-11-03 23:03:28 2501

原创 Stream数据流

Stream基础操作Java中为了简化集合的数据处理问题,提供了数据流接口:stream(),是一个重度使用lambda表达式的API。。常用接口:count()元素个数,distinct()消除重复数据,collect()收集处理后的数据,通常是在处理器处理后并且最后使用,filter()数据过滤。count()1.count()元素个数,package Stream;import java.util.ArrayList;import java.util.Collection;import

2020-11-01 15:35:33 488

原创 Map集合

什么是Map集合?Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的ley,另一组保存着Map的value。Collection集合保存数据的目的是为了输出,map集合保存数据的目的是进行key的查找图解map集合的作用和查字典类似,通过key找到对应的value,通过页数找到对应的信息。用学生类来说,key相当于学号,value对应name,age,sex等信息。用这种对应关系方便查找。Map接口中定义的常用方法:1.void clear():删除该Map对象

2020-10-31 23:35:49 143

原创 List集合

List时Collection子接口,其最大的特点是允许保存重复元素数据List用法list中添加,获取,删除元素;list中是否包含某个元素;list中根据索引将元素数值改变(替换);list中查看(判断)元素的索引;根据元素索引位置进行的判断;利用list中索引位置重新生成一个新的list(截取集合);判断list是否为空;返回Iterator集合对象;将集合转换为字符串;将集合转换为数组;去重复;1.list中添加,获取,删除元素;  添加方法是:.add(e);  获取方

2020-10-30 21:20:15 168

原创 反射与代理模式设计模式

静态代理模式package fanshedaili;interface Imessage{ public void send();}class Message implements Imessage{ @Override public void send() { System.out.println("发送消息"); }}class MessageProxy implements Imessage{ private Imessage

2020-10-30 15:18:56 66

原创 反射和类操作

1.反射获取类结构信息类package fan;public class Javademo extends abstractbase implements fan,server{ @Override public void send() { System.out.println(); } @Override public void server() { System.out.println(); }}packa

2020-10-28 00:11:17 99

原创 反射机制

1,反射机制获取类有三种方法,第一种利用类.classclass person{}public class Javaapidemo { public static void main(String[] args) { Class cl1=person.class; System.out.println(cl1); } }第二种利用实例化对象,在实例化对象.getclassackage file;import j

2020-10-27 21:58:17 97

原创 字节流与字符流

流是个抽象的概念,是对输入输出设备的抽象,输入流可以看作一个输入通道,输出流可以看作一个输出通道。输入流是相对程序而言的,外部传入数据给程序需要借助输入流。输出流是相对程序而言的,程序把数据传输到外部需要借助输出流字节流–传输过程中,传输数据的最基本单位是字节的流。字符流–传输过程中,传输数据的最基本单位是字符的流。字节流:outputStream(输出字节流) InputStream(输入字节流)字符处理流:Writer(输出字符流) Reader(输入字符流)所有流操作都应该采

2020-10-26 00:25:51 265

原创 file类文件

.File对象对应你磁盘上的一个文件或者文件夹(路径),一个file对象代表了一个文件或者文件夹的引用,并不是直接物理上的。进行文件基本操作,课题使用如下方法创建新文件, public boolean creatNewFile() throws IOException;判断文件是否存在:public boolean exists();删除文件:public boolean delete();package file;import java.io.File;import java.io.IOE

2020-10-25 16:46:04 535

原创 扔硬币

package uuu;import java.sql.SQLOutput;import java.util.Arrays;import java.util.Base64;import java.util.Random;public class JavaApidemo { public static void main(String[] args) { java ja=new java(); ja.throwCoin(1000); Sys

2020-10-25 10:36:16 125

原创 随机数组

package uuu;import java.util.Arrays;import java.util.Random;public class JavaApidemo{ public static void main(String[] args) { int resule[]=java.creat(5); System.out.println(Arrays.toString(resule)); }}class java{ private

2020-10-25 09:43:50 122

原创 比较器

Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较逻辑。可以把Comparable理解为内部比较器,而Comparator是外部比较器, 例如String类比较package mmm;import java.util.Arrays;public class test { public static void main(String[] a

2020-10-24 22:29:55 534

原创 定时任务

在java中一个完整定时任务需要由Timer、TimerTask两个类来配合完成。 API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。由TimerTask:Timer 安排为一次执行或重复执行的任务。我们可以这样理解Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,而TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。package ppp;import java.util.Timer;i

2020-10-24 17:13:06 60

原创 定时任务

在java中一个完整定时任务需要由Timer、TimerTask两个类来配合完成。 API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。由TimerTask:Timer 安排为一次执行或重复执行的任务。我们可以这样理解Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,而TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。package ppp;import java.util.Timer;i

2020-10-24 17:06:33 81

原创 BASE64解密

常规解密package ll;import java.util.Base64;public class test { public static void main(String[] args) { String str="www.mldn.com"; String mm=new String(Base64.getEncoder().encode(str.getBytes())); System.out.println(mm); String tt=new String(B

2020-10-24 11:25:59 723

原创 Java基础类库

**1.String StringBuffer StringBuilder的区别**String是无法被改变的,StringBuffer是可以改变的public static void main(String[] args) { StringBuffer buf = new StringBuffer(); buf.append("Hello").append(" World") change(buf); System.out.println(buf); //buf的值经方法调用后改变了}

2020-10-21 23:15:38 94

原创 多线程

#多线程#1.多线程的创建方式##1. 方式1:继承于Thread类:1.创建一个Thread的子类继承Thread;2.重写其中的run()方法;3.实例化继承Thread的实例对象;4.通过此实例对象调用start()方法public class myThread extends Thread{ private String title; public myThread(String title) { this.title=title; } @Override public

2020-10-17 16:05:55 114

原创 mybatis第一章

mybatis第一章学习mybatis的概念如何使用mybatismybatis的概念Mybatis是基于java的持久层框架持久化:是数据从瞬时状态变为持久状态持久层:完成持久化工作的代码—daoMybatis:就是帮助程序员将数据存入数据库中,和从数据库中取数据传统的jdbc操作:有很多重复代码,通过框架可以减少重复代码,提高开发效率Mybatis是半自动化的org框架。Mybatis的作用:MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除

2020-10-05 20:23:08 227 1

原创 git--git常用命令

git的常用命令1.常见的命令1)、cd : 改变目录。2)、cd . . 回退到上一个目录,直接cd进入默认目录3)、pwd : 显示当前所在的目录路径。4)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。5)、rm: 删除一个文件, rm index.js 就会把index.js文件删除。6)、mkdir: 新建一个...

2020-04-19 15:38:50 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除