|
@@ -1,6 +1,7 @@
|
|
|
package com.sf.quanrizhi;
|
|
|
|
|
|
import org.junit.Test;
|
|
|
+import sun.java2d.pipe.AAShapePipe;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
@@ -9,7 +10,9 @@ import java.lang.reflect.Constructor;
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.lang.reflect.Method;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
import java.util.Properties;
|
|
|
|
|
|
public class T {
|
|
@@ -232,4 +235,152 @@ public class T {
|
|
|
Object invoke = method.invoke(o);
|
|
|
System.out.println(invoke);
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void t10(){
|
|
|
+ Class<Student1> student1Class = Student1.class;
|
|
|
+ Table annotation = student1Class.getAnnotation(Table.class);
|
|
|
+ String tableName = "";
|
|
|
+ if(annotation !=null){
|
|
|
+ tableName = annotation.value();
|
|
|
+ }
|
|
|
+ Field[] declaredFields = student1Class.getDeclaredFields();
|
|
|
+ String[] columns= new String[declaredFields.length];
|
|
|
+ int index = 0;
|
|
|
+ for (Field declaredField : declaredFields) {
|
|
|
+ Column annotation1 = declaredField.getAnnotation(Column.class);
|
|
|
+ if(annotation1 != null){
|
|
|
+ columns[index++]= annotation1.columnName();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String sql = "SELECT ";
|
|
|
+ for (int i = 0;i<index;i++){
|
|
|
+ sql += columns[i];
|
|
|
+ if(i<index-1){
|
|
|
+ sql+=",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sql += " FROM "+tableName;
|
|
|
+ System.out.println(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过反射
|
|
|
+ * 像List<String> 集合中添加整型int
|
|
|
+ *
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t11() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
|
|
+ //创建list集合
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ //应该获取Arraylist 的class对象
|
|
|
+ Class<? extends List> listClass = list.getClass();
|
|
|
+ Method add = listClass.getMethod("add", Object.class);
|
|
|
+ add.invoke(list,1);
|
|
|
+ add.invoke(list,"hello");
|
|
|
+ add.invoke(list,true);
|
|
|
+ System.out.println(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void t12(){
|
|
|
+ //启动一个线程 并且输出一句话
|
|
|
+ new Thread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ System.out.println("开启一个新的线程!!");
|
|
|
+ }
|
|
|
+ }).start();
|
|
|
+
|
|
|
+ new Thread(() -> System.out.println("开启一个新的线程!!")).start();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 筛选出所有名称包含手机的商品
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t13(){
|
|
|
+ List<Product> productsWithName = findProductsWithName(Data.products);
|
|
|
+ System.out.println(productsWithName);
|
|
|
+
|
|
|
+ // 筛选出价格大于1000的商品
|
|
|
+ List<Product> productsWithPrice = findProductsWithPrice(Data.products);
|
|
|
+ System.out.println(productsWithPrice);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<Product> findProductsWithName(List<Product> products){
|
|
|
+ List<Product> list = new ArrayList<>();
|
|
|
+ for (Product p : products) {
|
|
|
+ if(p.getName().contains("手机")){
|
|
|
+ list.add(p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<Product> findProductsWithPrice(List<Product> products){
|
|
|
+ List<Product> list = new ArrayList<>();
|
|
|
+ for (Product product : products) {
|
|
|
+ if(product.getPrice() > 1000){
|
|
|
+ list.add(product);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void t14(){
|
|
|
+ // 筛选出名称种包含手机的商品
|
|
|
+ List<Product> productsWithCondition = findProductsWithCondition(Data.products, new MyPredicate() {
|
|
|
+ @Override
|
|
|
+ public boolean test(Product product) {
|
|
|
+ return product.getName().contains("手机");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ System.out.println(productsWithCondition);
|
|
|
+
|
|
|
+ List<Product> productsWithCondition1 = findProductsWithCondition(Data.products, new MyPredicate() {
|
|
|
+ @Override
|
|
|
+ public boolean test(Product product) {
|
|
|
+ return product.getPrice() > 1000;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ System.out.println(productsWithCondition1);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<Product> findProductsWithCondition(List<Product> products ,MyPredicate condition){
|
|
|
+ List<Product> list = new ArrayList<>();
|
|
|
+ for (Product product : products) {
|
|
|
+ if(condition.test(product)){
|
|
|
+ list.add(product);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void t16(){
|
|
|
+ findPhoneByCondition(Data.products,(product ->
|
|
|
+ product.getName().contains("手机")
|
|
|
+ ));
|
|
|
+
|
|
|
+ // 价格
|
|
|
+ findPhoneByCondition(Data.products,(product -> product.getPrice()>1000));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<Product> findPhoneByCondition(List<Product> products,MyPredicate myPredicate){
|
|
|
+ List<Product> list = new ArrayList<>();
|
|
|
+ for (Product product : products) {
|
|
|
+ if(myPredicate.test(product)){
|
|
|
+ list.add(product);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
}
|