- new出一个对象
- 利用反射创建对象
使用Class对象的newInstance()方法来创建该Class对象对应类的实例。但是这种方式要求该Class对象的对应类有默认的构造器,而执行newInstance()方法时实际上是利用默认构造器来创建该类的实例
(1)获取该Class对象;
(2)利用该Class对象的getConstrutor方法来获取指定的构造器;
(3)调用Construtor的newInstance方法来创建Java对象。- 利用反序列化创建对象
- clone创建对象
SpringBoot的核心配置文件有application和bootstarp配置文件
(1)application文件主要用于Springboot自动化配置文件
(2)使用Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息
重定向是将用户从当前处理请求定向到另一个视图(例如 JSP)或处理请求,以前的请求(request)中存放的信息全部失效,并进入一个新的 request 作用域;转发是将用户对当前处理的请求转发给另一个视图或处理请求,以前的 request 中存放的信息不会失效。
(1)转发是服务器行为,重定向是客户端行为。
(2)在 Spring MVC 框架中,控制器类中处理方法的 return 语句默认就是转发实现,只不过实现的是转发到视图
Java的类型转换可分为自动类型转换和强制类型转换两种
所有数值型,都可以自动转换为double类型。
所有数值型,除了double之外,都可以自动转换为float型。
所有整型都可以自动转换为long型。
整数类型可以自动转化为浮点类型,可能会产生舍入误差。当我们要把表数范围大的变量或值,转为表数范围小的,就需要使用强制转换。
- String -> char(i) 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。
- String -> char[ ] 使用String.toCharArray()(返回值为char[ ])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来访问string中的任意位置的元素。
- String -> int 使用Integer.parseInt(str) 进行转换,返回str所代表的的int值大小。
- String -> Integer 使用Integer.valueOf(str),返回Integer对象。
//int型 转 String型
String str1=Integer.toString(in); //使用Integer.toString()
String str2=String.valueOf(in); //使用String.valueOf(int i);返回String
String str3 = "" + in; //少用的方式
//int型 转 char型
char cha=(char)(in+'0');
//int型 转 Integer型
Integer integer=new Integer(in);
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
与 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
| String | StringBuffer | StringBuilder |
|---|---|---|
| String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 | StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 | 可变类,速度更快,线程不安全 |
| 不可变 | 可变 | 可变 |
| / | 线程安全 | 线程不安全 |
| / | 多线程操作字符串 | 单线程操作字符串 |
- length():返回字符串长度
- string1.concat(string2):连接字符串string1和string2
- charAt(int index):返回指定索引处的字符
- setCharAt(index,String);将index处的字符替换为String
- endsWith(String s):判断是否以某字符结束
- startsWith(String s):是否以指定前缀开始
- equals(Object s):将字符串与指定对象做比较,是否相等
- indexOf(String s):返回指定字符串在字符串中第一次出现的位置
- split(String s):根据指定的正则表达式匹配拆分字符串,返回字符串数组
- substring(int a,int b):返回从a到b新的字符串
- toCharArray():将字符串转换为字符数组
- trim():去除字符串首尾空格
- contains(char s):判断是否包含指定的字符系列
- isEmpty():判断字符串是否为空
- format(): 用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
- append:向序列中追加元素
- reverse:将序列中元素反转
- delete(int start, int end):移除此序列的子字符串中的字符
- deleteCharAt(int a):删除指定下标的字符
- insert(位置,元素):向序列中指定位置插入元素
- replace(int start, int end, String str):用指定的str替换序列中start到end的字符
- capacity():返回当前容量
- int length():返回长度(字符数)
- charAt(int index):返回指定索引处值
- indexOf(String str):返回第一次出现该字符的索引
- int indexOf(String str, int fromIndex):从指定下标开始,返回第一次出现该字符的索引
- int lastIndexOf(String str):返回最右边出现的指定子字符串在此字符串中的索引
- substring(int start, int end):返回一个新的 String,它包含此序列当前所包含的字符子序列
- toString():返回此序列中数据的字符串表示形式
equals是重写object的方法,而equalsIgnoreCase是String自己定义的方法
前者用于比较两个对象是否相等,而后者用于比较字符串忽略大小写的情况下是否相等
1. if 标签
if 标签通常用于 WHERE 语句、UPDATE 语句、INSERT 语句中,通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值。
<if test="name != null and name != ''"> and NAME = #{name} </if>
- 1
- 2
- 3
2. foreach 标签
foreach 标签主要用于构建 in 条件,可在 sql 中对集合进行迭代。也常用到批量删除、添加等操作中。
<!-- in查询所有,不分页 --> <select id="selectIn" resultMap="BaseResultMap"> select name,hobby from student where id in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
属性介绍:
- collection:collection 属性的值有三个分别是 list、array、map 三种,分别对应的参数类型为:List、数组、map 集合。
- item :表示在迭代过程中每一个元素的别名
- index :表示在迭代过程中每次迭代到的位置(下标)
- open :前缀
- close :后缀
- separator :分隔符,表示迭代时每个元素之间以什么分隔
3. choose 标签
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis 提供了 choose 元素,按顺序判断 when 中的条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when
的条件都不满则时,则执行 otherwise 中的 sql。类似于 Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。if 是与(and)的关系,而 choose 是或(or)的关系。
<select id="getStudentListChoose" parameterType="Student" resultMap="BaseResultMap"> SELECT * from STUDENT WHERE 1=1 <where> <choose> <when test="Name!=null and student!='' "> AND name LIKE CONCAT(CONCAT('%', #{student}),'%') </when> <when test="hobby!= null and hobby!= '' "> AND hobby = #{hobby} </when> <otherwise> AND AGE = 15 </otherwise> </choose> </where> </select>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
1. where 标签
“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以 AND 或 OR 开头的,则它会剔除掉
<select id="getStudentListWhere" parameterType="Object" resultMap="BaseResultMap"> SELECT * from STUDENT <where> <if test="name!=null and name!='' "> NAME LIKE CONCAT(CONCAT('%', #{name}),'%') </if> <if test="hobby!= null and hobby!= '' "> AND hobby = #{hobby} </if> </where> </select>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
2. set 标签
没有使用 if 标签时,如果有一个参数为 null,都会导致错误。当在 update 语句中使用 if 标签时,如果最后的 if 没有执行,则或导致逗号多余错误。使用 set 标签可以将动态的配置 set关键字,和剔除追加到条件末尾的任何不相关的逗号
<update id="updateStudent" parameterType="Object"> UPDATE STUDENT <set> <if test="name!=null and name!='' "> NAME = #{name}, </if> <if test="hobby!=null and hobby!='' "> MAJOR = #{major}, </if> <if test="hobby!=null and hobby!='' "> HOBBY = #{hobby} </if> </set> WHERE ID = #{id}; </update>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15