自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis----动态SQL四大标签

四大标签ifchoose(when,other)trim(where,set):where封装查询条件,set封装修改条件,都是和if结合使用foreach下面来一一介绍并测试,测试内容是基于上一篇的JavaBean和数据库Mybatis----resultMap详解及应用(一)一、if标签结合where标签:需求:查询员工:携带了哪个字段,查询条件就带上这个字段的值。mapper接口中的方法和对应的映射规则:public List<Employee> getEmpsByC

2020-08-25 21:35:05 497

原创 Mybatis----resultMap详解及应用(二)

接上一篇博客,这篇记录一下collection标签——定义关联集合类型。对于association一对一,collection则是一对多。一、定义关联集合类型collection场景二:查询部门的时候将该部门下所有的员工信息也查询出来DepartmentMapper接口文件中声明方法:public Department getDeptByIdPlus(Integer id);DepartmentMapper.xml文件中映射规则: collection定义关联集合类型的属性的封装规则

2020-08-25 19:19:07 166

原创 Mybatis----resultMap详解及应用(一)

接前面的博客,今天分享一下学习resultMap的笔记(几天不看,差点忘完了,回来再看看,沉淀一下!!!且看下面这个小案例:数据库中的列名为last_name,而JavaBean中的属性名为lastName,如果不在全局配置文件settings中开启驼峰命名法映射规则,last Name属性就封装不上了,如下所示,打印出来的lastName显示为null。Employee{id=1, lastName='null', email='112233@qq.com', gender='1', dept=nul

2020-08-25 17:31:03 311

原创 Mybatis----返回记录封装List和Map

下面所有测试中的getSqlSessionFactory()均是提取出来的方法,在搭建环境的文章中能找到。一、封装List如果返回的是一个集合,要写集合中的元素类型。mapper接口中的方法:public List<Employee> getEmpsByLastNameLike(String lastName);mapper.xml映射文件:<!--public List<Employee> getEmpsByLastNameLike(String lastName

2020-08-25 12:09:45 1179

原创 Mybatis----自增主键、参数处理、取值、空值处理

在上一篇增删改查的基础上继续:获取自增主键需要数据库支持自增主键MySQL支持自增主键键值的获取,mybatis也是利用jdbc中statement.getGeneratedKey(),useGeneratedKeys=“true”:使用自增主键获取主键值策略keyProperty=“id”:指定对应的主键属性:也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性<!--public int addEmp(Employee e);--><!--

2020-08-25 11:19:10 474

原创 Mybatis----简单实现增删改查

上一篇有环境搭建和运行,在其基础上在学习增删改,冲冲冲~先创建数据库,并添加一些数据CREATE TABLE `tbl_employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `last_name` varchar(255) DEFAULT NULL, `gender` char(1) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`))创建JavaB

2020-08-25 09:29:46 184

原创 Mybatis----全局配置文件 常用标签详解

1、引入DTD约束DTD文件更够更好的约束 xml文档,并且还有智能提示,提高写代码的效率。在IDEA中引入比较方便,在文档开头写明即可,在Eclipse中还要指明 dtd 文件的路径,百度一下即可找到设置方法。PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">接下来的配置可以没有,但顺序必须严格按照如下的顺序properties-->set

2020-08-24 20:55:01 473

原创 Mybatis----IDEA中搭建mybatis环境并测试

想学一个工具,最好的方法就是先让它在你的机器上跑起来,下面分享一下IDEA中使用搭建mybatis环境并测试1、准备工作从官网mybatis-3-releases下载mybatis的jar包(同文件夹内含官方文档PDF)和源码测试用的数据库是MySQL,所以再下载MySQL的连接器jar包mysql-connector-java,这个可以在MySQL的官网找到,注意电脑上装的数据库版本,然后选择适合自己版本的jar包。2、创建数据库创建一个简易的测试数据库tbl_employeeCREATE

2020-08-24 17:20:15 561

原创 Java笔记----反射及动态代理

一、获取Class对象的四种方法 //方式一:调用运行时类的属性: .class Class class1 = Person.class; //方式二:通过运行时类的对象,调用getClass() Person p = new Person("hah", 12); Class class2 = p.getClass(); //方式三:调用Class的静态方法,forName(String classPath)

2020-08-14 18:13:15 166

原创 Java笔记----TCP、UDP、URL示例

在Java中使用InetAddress类代表IP本地回路地址: 127.0.0.1 对应着: localhost如何实例化InetAddress:两个方法:getByName(String host) 、getLocalHost()两个常用方法: getHostName() / getHostAddress()端口号:正在计算机上运行的进程。要求:不同的进程有不同的端口号范围:被规定为一个16位的整数0~65535。一、TCP步骤:客户端:创建客户端InetAddres.

2020-08-14 15:57:49 176

原创 Java笔记----File类和IO流(二)

对于图片视频等文件用前面的字符流Reader和Writer是不行的,得用下面的字节流。一、FileInputStream和FileOutputStream四步走套路,直接上代码@Test public void test(){ FileInputStream fileinputStream = null; FileOutputStream fileOutputStream = null; try { //1.创建File类

2020-08-14 15:16:44 129

原创 Java笔记----File类和IO流(一)

一、File类及其常用方法File 类的使用:File类的一个对象,代表一个文件或一个文件目录File类声明在java.io包下File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、 文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用I0流来完成。后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的”终点". /* 1.如何创建File类的实例File(String filePath) File

2020-08-14 14:48:16 170

原创 泛型通配符 与 有限制的泛型通配符

一、泛型通配符子父类关系:List<String> list1 = new ArrayList<>()List<Object> list2 = new ArrayList<>()list1 = list2//编译错误List<?> list = null;list = list1;list = list2;结论:虽然泛型参数A B之间有子父类类关系,但G< A>和G< B>之间却没有子父类关系。G&

2020-08-10 18:01:27 158

原创 泛型练手题

声明一个泛型类GenericExercise< T>,内部提供一个私有的Map<String,T>,实现增、删、改、查、遍历User.javaimport java.util.Objects;public class User { private int id; private int age; private String name; public int getId() { return id; }

2020-08-10 16:44:05 113

原创 Java笔记----Map接口(非源码向)

初学者,先看结论,再用源码去印证结论,更高效。冲冲冲!!!一、Map接口及其实现类特点:Map:双列数据,存储key-value对的数据 —类似于高中的函数: y = f(x)HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和valueLInkedHashMap:继承自HashMap。保证在遍历的元素的时候,可以按照添加的顺序实现遍历,因为在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素,对于频繁的遍历操作,此类执行效率高于HashM

2020-08-10 16:02:00 90

原创 Java笔记----Set接口

Set接口特点及其实现类:1.Set接口: 存储无序的、不可重复的数据HashSet:作为Set接口的主要实现类;线程不安全的;可以存储null值LinkedHashSet: 作为HashSet的子类; 遍历其内部数据时,可以按照添加的顺序遍历对于频繁遍历的操作,LinkedHashSet效率比HashSet高。Set.TreeSet:可以按照添加对象的指定属性,进行排序。2.可用方法:Set接口作为Collection接口的子接口,并没有额外定义方法,使用的都是Collection中声明过的

2020-08-10 11:23:27 239

原创 Java笔记----List接口

List接口及其实现类特点:存储有序的、可重复的数据。ArrayList :jdk1.2,查询操作效率高,根据脚标找;作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储。LinkedList :jdk1.2,对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储。Vector :jdk1.0,List的古老实现类,线程安全的,效率低;底层使用Object[] elementData存储。源码分析结论:ArrayL

2020-08-10 10:37:24 132

原创 Java笔记----集合概览

偷了两天懒,把前面的回顾一下,顺便记一记,嘿嘿。一、集合框架概述1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi,数据库中2.1 数组在存储多个数据方面的特点: .一旦初始化以后,其长度就确定了.数组一旦定义好,数组的类型也就确定了。我们也就只能操作指定类型的数据了。比如: String[] arr;int[] arr1;0bject[] arr2;2.2 数组在存储多个数据

2020-08-10 10:04:30 104

原创 Java笔记----枚举类

CSDN–在线笔记本,我又来了,记录学习过程中的点点滴滴!!!JKD 5.0以前—自定义枚举类以前的真的和类没啥区别,直接上代码,感觉没啥好说的。public class EnumTest { public static void main(String[] args) { System.out.println(Season.SPRING.toString()); }}/*自定义枚举类 */class Season{ //1.声明Season对象的属性

2020-08-05 23:50:13 118

原创 Java比较器----Comparable和Comparator

Java对象正常情况下,只能进行比较:== 或 !=,不能使用 > or < ,但是在开发中,可能需要对多个对象排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中任意一个:Comparable 或 ComparatorComparable接口----自然排序像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式像String、包装类等重写了compareTo方法以后,进行了从小到大的排列重写compar

2020-08-05 23:25:19 149

原创 String应用----求两个字符串的最大子串

求两个字符串的最大子串,利用好String类中的方法可以轻松解决这个问题。思路:删减短串去和长串依次对比,利用String中的方法可以得到子串,但其中最重要的是怎样才能不漏掉子串。下面采用给子串“瘦身”来逐个对比。第一次:直接看长串是否包含短串,是则直接返回短串;第二次:短串长度-1,这时有两个子串,每个子串都去和长串对比,看是否包含;第三次:短串长度-2,这时有三个子串-。。。。。。。外层循环控制短串长度,内层循环控制所有子串对比涉及方法:length(),contains(),subS

2020-08-05 23:00:34 840

原创 Java笔记--String入门、StringBuffer、StringBuilder

随手记,冲冲冲!!!1.String入门知识String声明为final的, 不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小String内部定义了final char[] value用于存储字符串数据String:代表不可变的字符序列。简称:不可变性。体现:当对字符事重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值当对现有的字符串进行连接操作时,也需要重新指定内存区

2020-08-05 00:12:11 97

原创 Java线程通信+生产者消费者问题

新的笔记,继续冲!!!随手整理的,有错误的话轻喷,谢谢,哈哈哈。先从问题引入:使用两个线程打印1-100,线程1、线程2交替打印。首先分析一下:这是一个多线程问题,就要涉及到线程的安全,看过前面的博客,再来实现这个问题肯定不难,但是还要满足交替这个条件,这就要通过线程之间的通信来解决。线程1打印完一个就要通知线程2来打印。1.涉及的方法wait():当前线程阻塞,释放同步监视器notify():唤醒一个被阻塞的线程。如果有多个线程被阻塞,唤醒优先级高的(相同则随机notifyall():唤醒全

2020-08-04 23:19:32 146

原创 Java线程安全问题的三种解决方式

新的一天,回顾一下昨天的问题!首先从问题引入:有三个窗口共同卖100张票,使用实现Runnable接口的方式问题:在买票的过程中,出现了重票、错票。原因:当一个线程在操作ticket过程中,操作尚未完成,其他线程参与进来,也操作车票---->出现了线程安全问题。如何解决:当一个线程a操作ticket时,其他线程不能参与进来,直到a操作完ticket时,其他线程线程才可以开始操作ticket。这种情况即使线程a出现了阻塞,也不能被改变。这就涉及到同步机制来解决线程安全问题:同步代码块同

2020-08-04 10:26:46 418

原创 Java笔记----代码块

将之前写的笔记全都搬到线上来咯,慢慢沉淀,加油!!!代码块作用:用来初始化类、对象修饰符:只能用static修饰分类:静态代码块 vs 动态代码块静态代码块内部可以有输出语句随着类的加载而执行,而且只执行一次作用:初始化类的信息顺序执行,只能调用静态的属性和方法非静态代码块内部可以有输出语句随着对象的创建而执行每创建一个对象, 就执行一次非静态代码块作用:可以在创建对象时,对 对象的属性等进行初始化顺序执行,属性和方法都可以调用结合代码块,深入理解属性可以赋值的位

2020-08-02 15:51:35 182

原创 创建线程的四种方式--常用方法--生命周期

把CSDN当一个在线笔记本吧,哈哈哈加上新特性中的创建方法,共有四种,暂时没去了解。多线程的创建:方式一:继承Thread类步骤:创建一个继承于Thread类的子类重写Thread类的run() --> 将此线程执行的操作声明在run()中创建子类的对象通过此对象调用start()问题:一:启动一个线程,必须调用start(),不能调用run()的方式启动线程。start两个作用:①启动当前线程,②并调用run()方法。二:如果想再启动一个线程,必须重新创建一个Thread子

2020-08-02 15:28:46 1045

原创 单例模式的两种方式,线程安全的懒汉式单例模式

随手记。单例模式作为23种设计模式种比较经典的,一般都要求能够手写(很简单),下面写一下两种实现方式:1.饿汉式步骤:1.新建一个类,提供私有构造器2.使用构造器声明当前对象实例成员3.声明public static的返回当前类对象的方法4.要在方法中使用私有对象成员,要将实例成员声明为static的public class Test { // 饿汉式 单例模式 public static void main(String[] args) { Bank b1 = Bank.getI

2020-08-02 15:06:31 546

原创 Java入门小算法强化基础知识----递归

递归把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量,所以递归是必须要掌握滴。在使用递归时,主要把握递归的方向——边界在哪里?要向着已知方向递归,不然就成了无穷递归,类似死循环!!!1.一百之间所有数的和思路:求1-100的和,先求1-99的和再加上100…求1-2的和,1的和就是1咯,这个1就是边界。public int sum(int num){ if(num == 1){ retu

2020-08-02 01:51:02 276

原创 Java入门小算法强化基础知识----数组

随便记一记数组相关的经典练习题吧,首先要掌握两个数交换的方法(两条平行线 //,上一行的最后一个变量是下一行的第一个变量,很好记)。temp = a;a = b;b = temp;1.赋值练习–杨辉三角首先要知道杨辉三角长什么样子,如下:1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 有什么用?搜索引擎搜一下就知道了,都是古人智慧的结晶呀!定义:行首行末都为1,第 i 行 j 列的数等于,i-1 行 j 列 与 i-1 行 j-1 列之和。思路:首先看考察的什么问

2020-08-02 01:11:01 98

原创 Java入门小算法强化基础知识----循环结构

这个暑假,在有一点点C语言基础上开始学习Java,记录一下学习过程中用来强化基础知识的简单算法。1.求两个数的最大公约数和最小公倍数思路:1.最大公约数:~肯定不会大于两数中的小数,且最小为1(终止条件)从小的数开始递减,能整除且无余数(求余),找到一个共同的约数就是最大公约数。2.最小公倍数:~肯定不会小于两数中的大数,且最大为两数的乘积(终止条件)从大的数开始递增,找到一个共同的倍数就是最小公倍数。import java.util.Scanner;public class Test {

2020-08-01 19:28:59 172

空空如也

空空如也

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

TA关注的人

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