一、jdk8的特性stream().map()
public class TestJava8 {
public static void main(String[] args) {
List<String> alpha = Arrays.asList("a", "b", "c", "d");//Before Java8List<String> alphaUpper = new ArrayList<>();for (String s : alpha) {
alphaUpper.add(s.toUpperCase());}System.out.println(alpha); //[a, b, c, d]System.out.println(alphaUpper); //[A, B, C, D]// Java 8List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println(collect); //[A, B, C, D]// Extra, streams apply to any data type.List<Integer> num = Arrays.asList(1,2,3,4,5);List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());System.out.println(collect1); //[2, 4, 6, 8, 10]}}
参考:https://www.cnblogs.com/xiaoliu66007/p/13039346.html
二、Java Field.set()向对象的这个Field属性设置新值value
将指定对象变量上此 Field 对象表示的字段设置为指定的新值.
//根据属性名设置它的值
A a = new A();
Field field = a.getClass().getDeclaredField("x");
field.setAccessible(true);
field.set(a, 1);
例子
public static void main(String[] args) throws NoSuchFieldException,
SecurityException,
IllegalArgumentException,
IllegalAccessException {
Person person = new Person();person.setName("VipMao");person.setAge(24);person.setSex("男");//通过Class.getDeclaredField(String name)获取类或接口的指定属性值。 Field f1 = person.getClass().getDeclaredField("name");System.out.println("-----Class.getDeclaredField(String name)用法-------");System.out.println(f1.get(person));System.out.println("-----Class.getDeclaredFields()用法-------");//通过Class.getDeclaredFields()获取类或接口的指定属性值。 Field[] f2 = person.getClass().getDeclaredFields();for (Field field: f2) {
field.setAccessible(true);System.out.println(field.get(person));}//修改属性值 System.out.println("----修改name属性------");f1.set(person, "Maoge");//修改后再遍历各属性的值 Field[] f3 = person.getClass().getDeclaredFields();for (Field fields: f3) {
fields.setAccessible(true);System.out.println(fields.get(person));}
}
结果
-----Class.getDeclaredField(String name)用法-------
VipMao
-----遍历属性值-------
VipMao
24
男
----修改name属性后再遍历属性值------
Maoge
24
男
通过set(Object obj,value)重新设置新的属性值,并且当我们需要获取私有属性的属性值得时候,我们必须设置Accessible为true,然后才能获取。
参考:http://www.51gjie.com/java/794.html
三、setAccessible(true)用法及意义
Accessable属性是继承自AccessibleObject 类. 功能是启用或禁用安全检查 ;
1.作用于方法上,method.setAccessible(true);
public static void test02() throws Exception{
User u = new User();Class clazz = u.getClass();Method m = clazz.getDeclaredMethod("getUname", null);m.setAccessible(true);m.invoke(u, null);
}
2.作用于属性上,field.setAccessible(true);
if (field.isAnnotationPresent(TestIdSign.class)){
try {
field.setAccessible(true);field.set(object,testId);} catch (IllegalAccessException e) {
throw new RuntimeException("set testID illegalAccessException",e);}
}
将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查;实际上setAccessible是启用和禁用访问安全检查的开关,并不是为true就能访问为false就不能访问 ;
由于JDK的安全检查耗时较多.所以通过setAccessible(true)的方式关闭安全检查就可以达到提升反射速度的目的 。
参考:https://blog.csdn.net/buyaoshuohua1/article/details/104175188?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
四、Jpa基本注解
@Entity 告诉JPA该实体类Blog需要映射到数据库
@Tabel 指定Blog类映射时,数据库对应的表名为t_blog
@Id @GeneratedValue 指定t_blog表的主键为id,采用自增长的方式生成主键
@Basic 为默认属性,可以不指定
@Temporal 指定日期字段createtime的映射格式为:日期+时间
@Transient 指定author字段不映射到数据库表
@Column 指定字段content映射t_blog表时的列名为blog_content,nullable = false 值不能为null
@Lob 标明该字段为大对象,并给该字段配置了懒加载
参考:https://blog.csdn.net/bdqx_007/article/details/86373144
了解jpa:https://www.cnblogs.com/ityouknow/p/5891443.html
五、分页工具一Pageable与Page
Pageable 是Spring Data库中定义的一个接口,用于构造翻页查询,是所有分页相关信息的一个抽象,通过该接口,我们可以得到和分页相关所有信息(例如pageNumber、pageSize等),这样,Jpa就能够通过pageable参数来得到一个带分页信息的Sql语句。
参考:https://www.cnblogs.com/loveer/p/11303608.html
六、Git在IDEA中的使用
参考 :https://blog.csdn.net/mucaoyx/article/details/98476174?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
七、idea中database运用问题
Cannot resolve table * (至今未解决。。不知道原因)
参考:https://blog.csdn.net/m0_37876935/article/details/105464081