guyanqing 1 سال پیش
والد
کامیت
25d307e8f2
30فایلهای تغییر یافته به همراه1085 افزوده شده و 5 حذف شده
  1. 20 0
      pom.xml
  2. 85 0
      src/main/java/com/sf/GuessNumber.java
  3. 72 0
      src/main/java/com/sf/Guest.java
  4. 53 0
      src/main/java/com/sf/MethodBlogs.java
  5. 37 0
      src/main/java/com/sf/MethodBlogsTest.java
  6. 44 0
      src/main/java/com/sf/T.java
  7. 214 0
      src/main/java/com/sf/jdbctest/BaseDao.java
  8. 119 0
      src/main/java/com/sf/jdbctest/JDBCUtils.java
  9. 273 0
      src/main/java/com/sf/jdbctest/Test01.java
  10. 65 0
      src/main/java/com/sf/jdbctest/User.java
  11. 40 0
      src/main/java/com/sf/reflectiontest/Test.java
  12. 40 1
      src/main/java/com/sf/reflectiontest/Test01.java
  13. 7 0
      src/main/java/com/sf/reflectiontest/User.java
  14. 0 2
      src/main/resources/ db.properties
  15. 8 0
      src/main/resources/db.properties
  16. 0 2
      target/classes/ db.properties
  17. BIN
      target/classes/com/sf/GuessNumber.class
  18. BIN
      target/classes/com/sf/Guest.class
  19. BIN
      target/classes/com/sf/MethodBlogs.class
  20. BIN
      target/classes/com/sf/MethodBlogsTest.class
  21. BIN
      target/classes/com/sf/T.class
  22. BIN
      target/classes/com/sf/day25/Test01.class
  23. BIN
      target/classes/com/sf/jdbctest/BaseDao.class
  24. BIN
      target/classes/com/sf/jdbctest/JDBCUtils.class
  25. BIN
      target/classes/com/sf/jdbctest/Test01.class
  26. BIN
      target/classes/com/sf/jdbctest/User.class
  27. BIN
      target/classes/com/sf/reflectiontest/Test.class
  28. BIN
      target/classes/com/sf/reflectiontest/Test01.class
  29. BIN
      target/classes/com/sf/reflectiontest/User.class
  30. 8 0
      target/classes/db.properties

+ 20 - 0
pom.xml

@@ -27,6 +27,26 @@
             <version>2.5</version>
         </dependency>
 
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.2.6</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
+        <dependency>
+            <groupId>commons-dbutils</groupId>
+            <artifactId>commons-dbutils</artifactId>
+            <version>1.7</version>
+        </dependency>
+
     </dependencies>
 
     <properties>

+ 85 - 0
src/main/java/com/sf/GuessNumber.java

@@ -0,0 +1,85 @@
+package com.sf;
+
+import java.util.Scanner;
+
+/**
+ * @author guyanqing
+ */
+public class GuessNumber {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        int option = 0;//存放选项的
+        while (true) {
+            System.out.println("**********************************");
+            System.out.println("     1----等级1:0-100");
+            System.out.println("     2----等级2:0-1000");
+            System.out.println("     3----等级3:0-10000");
+            System.out.println("     4----等级4:0-100000");
+            System.out.println("     0----退出");
+            System.out.println("**********************************");
+
+            System.out.println("请输入对应数字进行操作:");
+            option = scanner.nextInt();
+            if (option >= 0 && option <= 4) {
+                break;//选择正确
+            }
+            System.out.println("输入错误,请重新输入!");
+        }
+        if (option != 0) {
+            int range = 10;
+            for (int i = 1; i <= option; i++) {//输入了几就在10后面加几位
+                range *= 10;
+            }
+
+            int rand = randNumber(0, range);//随机生成一个0-range的数
+            System.out.println(rand);
+            int count = 0;
+            while (true) {
+                System.out.println("请输入一个数字:");
+                int temp = scanner.nextInt();
+                count++;
+                if (judge(rand, temp) == 0) {
+                    System.out.println("猜小了!");
+                } else if (judge(rand, temp) == 2) {
+                    System.out.println("猜大了!");
+                }
+                if (judge(rand, temp) == 1) {
+                    System.out.println("恭喜你第" + count + "次答对,游戏结束!");
+                    break;
+                }
+            }
+        }else{
+            System.out.println("程序退出!");
+        }
+    }
+
+    /**
+     * 产生随机数组
+     *
+     * @param startPos 范围的起始
+     * @param endPos   范围的终止
+     * @return 产生的数组
+     */
+    public static int randNumber(int startPos, int endPos) {
+        int number = (int) (Math.random() * endPos + startPos);//随机生成startPos - endPos 的整数
+        return number;//返回生成的数组;
+    }
+
+    /**
+     * 数字判断
+     *
+     * @param originalNumber 原数字
+     * @param judgeNumber    需要判断的数字
+     * @return 0 下了
+     * 1 等于
+     * 2 大了
+     */
+    public static int judge(int originalNumber, int judgeNumber) {
+        if (originalNumber > judgeNumber) {
+            return 0;
+        } else if (originalNumber < judgeNumber) {
+            return 2;
+        }
+        return 1;
+    }
+}

+ 72 - 0
src/main/java/com/sf/Guest.java

@@ -0,0 +1,72 @@
+package com.sf;
+
+import java.util.Scanner;
+
+/**
+ * 人机猜拳游戏
+ */
+public class Guest {
+    /**
+     * 程序启动的入口   main
+     *     1 石头  2 剪子  3 布
+     *     角色:电脑端    和 人为端
+     *     规则:   人为端(玩家)想赢   玩家-电脑  ===>  2  -1  -1
+     *              电脑端赢
+     *              平局   1==1   2==2   3==3
+     *   分:玩家或电脑端积分到达8    游戏停止(闯关完成)
+     */
+
+    public static void main(String[] args) {
+        System.out.println("人家猜拳游戏开始啦~");
+        //从键盘输入
+        Scanner scanner = new Scanner(System.in);
+        /*
+        先定义电脑端和人为端的积分变量
+         */
+        //电脑端 积分
+        int comIntegral = 0;
+        //人为端的积分
+        int playIntegral = 0;
+        while (comIntegral <8  & playIntegral <8){
+            //电脑端随机抽取一个数
+           int computer = (int) (Math.random()*3+1);
+           System.out.println("电脑端随机的数是"+computer);
+           //人为端从键盘输入
+            int player = scanner.nextInt();
+
+            if(player == 886){
+                System.out.println("游戏结束啦~");
+                break;
+            }
+
+            //1-3       判断玩家输入的合法性
+            if (player >= 1 & player <=3) {
+                //判断输入发是否相等
+                if(player != computer){
+                    if((player - computer) == -1 | (player - computer) == 2){
+                        //玩家赢
+                        playIntegral += 1;
+                        System.out.println("这次玩家选择的是"+player+"=====电脑端随机选择的是"+computer);
+                        System.out.println("此时的玩家积分"+playIntegral+"====电脑积分是"+comIntegral);
+                    }else {
+                        //电脑端赢
+                        comIntegral += 1;
+                        System.out.println("这次玩家选择的是"+player+"=====电脑端随机选择的是"+computer);
+                        System.out.println("此时的玩家积分"+playIntegral+"====电脑积分是"+comIntegral);
+                    }
+                }else {
+                    //电脑和玩家相等的情况
+                    System.out.println("脑和玩家相等的情况,默契十足~");
+                    System.out.println("此时的人为积分"+playIntegral+"====电脑积分是"+comIntegral);
+                }
+            }else {
+                System.out.println("人为输入不合法,请重新输入【1~3】");
+                System.out.println("此时的人为积分"+playIntegral+"====电脑积分是"+comIntegral);
+                System.out.println("-----------------------");
+            }
+
+        }
+
+    }
+
+}

+ 53 - 0
src/main/java/com/sf/MethodBlogs.java

@@ -0,0 +1,53 @@
+package com.sf;
+import java.util.Scanner;
+public class MethodBlogs {
+    public static void main(String[] args) {
+        Scanner scan = new Scanner(System.in);
+        System.out.println("\"石头剪刀布,电脑已就绪!游戏规则如下:和电脑猜拳\n" + " 1【石头】;2【剪刀】;3【布】\n");
+        int comIntegral = 0;   // 电脑积分
+        int plaIntegral = 0;   // 人的积分
+//        plaIntegral = comIntegral = 0;
+        //规定当双方谁的积分达到5分 游戏结束
+        while (comIntegral<5 | plaIntegral<5) {
+//        Random r = new Random();
+            int comPuter = (int) (Math.random() * 3 + 1);  //电脑随机产生的数
+            System.out.println("请输入数字猜拳");
+            int player = scan.nextInt();                  //玩家输入的数
+            if (player==886){
+                System.out.println("下次再见咯~");
+                break;
+            }
+            if ((player > 0) & (player < 4)) {
+                System.out.println("你的选择为:" + player);
+                if (comPuter != player) {
+                    //玩家赢
+                    if ((player - comPuter == -1) | (player - comPuter == 2)) {
+                        plaIntegral += 1;
+                        System.out.println("不错不错,竟然真的赢了!本次游戏,电脑出" + comPuter + "你出" + player);
+                        System.out.println("目前战况为: 电脑:" + comIntegral + " 分" + ",玩家 " + plaIntegral + " 分");
+                        System.out.println("退出游戏请输入886,输入其他数字继续");
+                        System.out.println("----------------------------------------\n");
+                    } else {
+                        comIntegral += 1;
+                        System.out.println("还好我技高一筹,你败了!本次游戏,电脑出" + comPuter + "你出" + player);
+                        System.out.println("目前战况为: 电脑:" + comIntegral + " 分" + ",玩家 " + plaIntegral + " 分");
+                        System.out.println();
+                        System.out.println("退出游戏请输入886,输入其他数字继续");
+                        System.out.println("----------------------------------------\n");
+
+                    }
+
+                }else if (comPuter == player) {
+                    System.out.println("真是太有默契了,电脑出 " + comPuter + "你出" + player);
+                    System.out.println("目前战况为: 电脑:" + comIntegral + " 分" + ",玩家 " + plaIntegral + " 分");
+                    System.out.println("退出游戏请输入886,输入其他数字继续");
+                    System.out.println("----------------------------------------\n");
+                }
+            } else {
+                System.out.println("你输入的数字不合法,重新输入吧~");
+                System.out.println();
+                System.out.println("----------------------------------------\n");
+            }
+        }
+    }
+}

+ 37 - 0
src/main/java/com/sf/MethodBlogsTest.java

@@ -0,0 +1,37 @@
+package com.sf;
+
+import java.util.Scanner;
+
+public class MethodBlogsTest {
+    /**
+     * 猜拳游戏    1 石头  2 剪刀 3 布
+     */
+    public static void main(String[] args) {
+        System.out.println("游戏开始啦");
+        Scanner scanner = new Scanner(System.in);
+        int comIntegral = 0;
+        int playIntegral = 0;
+        while (comIntegral <5 | playIntegral < 5){
+         //随机生成电脑数
+           int com = (int) (Math.random()*3+1);
+           //人的数
+            int player = scanner.nextInt();
+            if(player == 886){
+                break;
+            }
+            if(player >0 & player <4){
+                if(player != com){
+                    if(player - com == -1 | player  - com == 2){
+                        playIntegral +=1;
+                    }else {
+                        comIntegral +=1;
+                    }
+                }else {
+                    System.out.println("默契");
+                }
+            }else {
+                System.out.println("输入有误");
+            }
+        }
+    }
+}

+ 44 - 0
src/main/java/com/sf/T.java

@@ -0,0 +1,44 @@
+package com.sf;
+
+import javax.xml.transform.Source;
+import java.time.Year;
+import java.util.Scanner;
+
+public class T {
+
+    /**
+     * 程序启动的入口
+     * @param args
+     *
+     * 我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
+     *
+     * 编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息。
+     */
+    public static void main(String[] args) {
+//        Scanner scanner = new Scanner(System.in);
+//        System.out.println("开始输入狗的年龄~");
+//        double personYear = 0.0;
+//        int dogYear = scanner.nextInt();
+//        if(dogYear<0){
+//            System.out.println("狗的年龄必须大于0~");
+//        }else if (dogYear > 2){
+//            personYear = 21+(dogYear-2)*4;
+//        }else {
+//             personYear = 10.5* dogYear;
+//        }
+//        System.out.println("狗的"+dogYear+"岁========"+"相当于人的"+personYear+"岁");
+
+
+        /**
+         * 通过双层for循环     将一天的时间(时 分)打印到当前控制台上
+         */
+        //第一次层for循环是小时    第二层是分钟
+        for (int hour = 0;hour <24 ;hour++){
+            for (int min = 0;min <60;min++){
+                System.out.println(hour+"时"+min+"分");
+            }
+        }
+
+
+    }
+}

+ 214 - 0
src/main/java/com/sf/jdbctest/BaseDao.java

@@ -0,0 +1,214 @@
+package com.sf.jdbctest;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidDataSourceFactory;
+import com.alibaba.druid.util.JdbcUtils;
+import org.apache.commons.dbutils.DbUtils;
+import org.junit.Test;
+
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import static sun.plugin.javascript.navig.JSType.URL;
+
+/**
+ * 通过数据库的操作类
+ * @param <T>
+ */
+public class BaseDao<T> {
+    /**
+     * 通过的增删改
+     */
+    public void update(Connection conn,String sql,Object...args) throws SQLException {
+        PreparedStatement ps = conn.prepareStatement(sql);
+        //赋值
+        if(args != null && args.length>0){
+            for (int i = 0;i<args.length;i++){
+                ps.setObject(i+1,args[i]);
+            }
+        }
+        ps.executeUpdate();
+    }
+
+
+    /**
+     * 查询列表
+     * 原生反射
+     * @return
+     */
+    public List<T> getList(Connection connection , String sql ,Class<T> clazz ,Object...args)throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
+        List<T> list = new ArrayList<>();
+        T t = null;
+        //获取PreparedStatement
+        PreparedStatement ps = connection.prepareStatement(sql);
+        //赋值
+        if(args!=null && args.length>0) {
+            for(int i=0;i<args.length;i++) {
+                ps.setObject(i+1, args[i]);
+            }
+        }
+        //执行
+        ResultSet rs = ps.executeQuery();
+        //获取数据库表的元数据信息
+        ResultSetMetaData rsmd = rs.getMetaData();
+        //获取数据库表的列总数
+        int columnCount = rsmd.getColumnCount();
+        while(rs.next()) {
+            //实例化对象
+            t=clazz.newInstance();
+            //循环获取列名
+            for(int i=0;i<columnCount;i++) {
+                //通过列的下标获取列名
+                String columnLabel = rsmd.getColumnLabel(i+1);
+                //通过列标签获取列值
+                Object columnValue = rs.getObject(columnLabel);
+                //反射通过名称获取java对象中描述属性的对象
+                Field field = clazz.getDeclaredField(columnLabel);//dept_id as deptId
+                //取消私有权限
+                field.setAccessible(true);
+                //给属性对象赋值
+                field.set(t, columnValue);
+            }
+            list.add(t);
+        }
+        return list;
+    }
+
+    /**
+     * 通用查询(单个)
+     * 原生反射
+     */
+    public T getT(Connection connection,String sql,Class<T> clazz,Object ...args) throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
+        T t = null;
+        //获取PreparedStatement
+        PreparedStatement ps = connection.prepareStatement(sql);
+        //赋值
+        if(args!=null && args.length>0) {
+            for(int i=0;i<args.length;i++) {
+                ps.setObject(i+1, args[i]);
+            }
+        }
+        //执行
+        ResultSet rs = ps.executeQuery();
+        //获取数据库表的元数据信息
+        ResultSetMetaData rsmd = rs.getMetaData();
+        //获取数据库表的列总数
+        int columnCount = rsmd.getColumnCount();
+        if(rs.next()) {
+            //实例化对象
+            t=clazz.newInstance();
+            //循环获取列名
+            for(int i=0;i<columnCount;i++) {
+                //通过列的下标获取列名
+                String columnLabel = rsmd.getColumnLabel(i+1);
+                //通过列标签获取列值
+                Object columnValue = rs.getObject(columnLabel);
+                //反射通过名称获取java对象中描述属性的对象
+                Field field = clazz.getDeclaredField(columnLabel);//dept_id as deptId
+                //取消私有权限
+                field.setAccessible(true);
+                //给属性对象赋值
+                field.set(t, columnValue);
+            }
+        }
+        return t;
+    }
+
+
+//    /**
+//     * 通用查询(单个)
+//     * 使用下面工具进行反射赋值
+//     * commons-beanutils-1.8.0.jar
+//     * commons-logging-1.1.1.jar
+//     */
+//    public T getT_(Connection connection,String sql,Class<T> clazz,Object ...args) throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException, InvocationTargetException, NoSuchMethodException {
+//        T t = null;
+//        //获取PreparedStatement
+//        PreparedStatement ps = connection.prepareStatement(sql);
+//        //赋值
+//        if(args!=null && args.length>0) {
+//            for(int i=0;i<args.length;i++) {
+//                ps.setObject(i+1, args[i]);
+//            }
+//        }
+//        //执行
+//        ResultSet rs = ps.executeQuery();
+//        //获取数据库表的元数据信息
+//        ResultSetMetaData rsmd = rs.getMetaData();
+//        //获取数据库表的列总数
+//        int columnCount = rsmd.getColumnCount();
+//        if(rs.next()) {
+//            //实例化对象
+//            t=clazz.newInstance();
+//            //循环获取列名
+//            for(int i=0;i<columnCount;i++) {
+//                //通过列的下标获取列名
+//                String columnLabel = rsmd.getColumnLabel(i+1);
+//                //通过列标签获取列值
+//                Object columnValue = rs.getObject(columnLabel);
+//                //反射通过名称获取java对象中描述属性的对象
+//                //Field field = clazz.getDeclaredField(columnLabel);//dept_id as deptId
+//                //取消私有权限
+//                //field.setAccessible(true);
+//                //给属性对象赋值
+//                //field.set(t, columnValue);
+//                PropertyUtils.setProperty(t, columnLabel, columnValue);
+//            }
+//        }
+//        return t;
+//    }
+
+
+    /**
+     * 数据库连接池
+     */
+    @Test
+    public void t11() throws SQLException {
+        DruidDataSource ds = new DruidDataSource();
+        //设置初始化参数
+        ds.setUrl("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8");
+        ds.setUsername("root");
+        ds.setPassword("root");
+        ds.setDriverClassName("com.mysql.jdbc.Driver");
+        Connection conn = ds.getConnection();
+        String sql = "INSERT INTO user(user_name,price,create_time) VALUES(?,?,?)";
+//        预编译
+        PreparedStatement pre = conn.prepareStatement(sql);
+        pre.setString(1,"admin");
+        pre.setDouble(2,100.21);
+        pre.setDate(3,new Date(new java.util.Date().getTime()));
+//        执行进行绑定参数之后的sql语句
+        int i = pre.executeUpdate();
+        System.out.println(i);
+    }
+
+
+    /**
+     * 连接池2
+     */
+    @Test
+    public void t12() throws Exception {
+//听过加载外部配置文件的方式
+        Properties p = new Properties();
+        p.load(JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties"));
+//采用Druid提供的工厂类创建DruidDataSource对象
+        DataSource dataSource = DruidDataSourceFactory.createDataSource(p);
+        Connection conn = dataSource.getConnection();
+
+        String sql = "INSERT INTO user(user_name,price,create_time) VALUES(?,?,?)";
+//        预编译
+        PreparedStatement pre = conn.prepareStatement(sql);
+        pre.setString(1,"admin");
+        pre.setDouble(2,100.21);
+        pre.setDate(3,new Date(new java.util.Date().getTime()));
+//        执行进行绑定参数之后的sql语句
+        int i = pre.executeUpdate();
+        System.out.println(i);
+    }
+
+}

+ 119 - 0
src/main/java/com/sf/jdbctest/JDBCUtils.java

@@ -0,0 +1,119 @@
+package com.sf.jdbctest;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.*;
+import java.util.Properties;
+
+public class JDBCUtils {
+    private static Properties properties = null;
+    static {
+        //通过类的加载器
+        InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties");
+         properties = new Properties();
+        try {
+            properties.load(in);
+            Class.forName(properties.getProperty("driverClass"));
+        } catch (ClassNotFoundException | IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * 获取数据库的连接
+     * @return
+     */
+    public static Connection getConnection() throws SQLException {
+        return DriverManager.getConnection(properties.getProperty("jdbcUrl"),properties.getProperty("jdbcUser"),properties.getProperty("jdbcPassword"));
+    }
+
+
+    /**
+     * 关闭连接
+     */
+    public static void close(Connection conn , Statement statement, ResultSet rs){
+        if(conn != null){
+            try {
+                conn.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+        if(statement != null){
+            try {
+                statement.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+
+        if(rs != null){
+            try {
+                rs.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    public static void close(Connection conn ,Statement statement){
+        if(conn != null){
+            try {
+                conn.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+
+        if(statement != null){
+            try {
+                statement.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    public static void close(Connection conn,PreparedStatement ps,ResultSet rs) {
+        if(conn!=null) {
+            try {
+                conn.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+        if(ps!=null) {
+            try {
+                ps.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+        if(rs!=null) {
+            try {
+                rs.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+    public static void close(Connection conn,PreparedStatement ps) {
+        if(conn!=null) {
+            try {
+                conn.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+        if(ps!=null) {
+            try {
+                ps.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}

+ 273 - 0
src/main/java/com/sf/jdbctest/Test01.java

@@ -0,0 +1,273 @@
+package com.sf.jdbctest;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Test01 {
+
+    /**
+     * 添加操作
+     * @throws ClassNotFoundException
+     * @throws SQLException
+     */
+    @Test
+    public void t1() throws ClassNotFoundException, SQLException {
+//①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8", "root", "root");
+//③创建Statement对象
+        Statement statement = conn.createStatement();
+//④创建添加SQL语句
+        String sql = "INSERT INTO user(user_name,price,create_time) VALUES('admin',100.12,now())";
+//⑤执行sql语句,返回影响行数,如果需要获取主键,要配置Statement.RETURN_GENERATED_KEYS参数
+        int row = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
+//⑥打印影响行数
+        System.out.println("row:" + row);
+
+//如果想获取插入用户的主键可以使用statement.getGeneratedKeys()获取
+
+        ResultSet resultSet = statement.getGeneratedKeys();
+        if (resultSet.next()) {
+            int id = resultSet.getInt(1);
+            System.out.println(id);
+        }
+    }
+
+
+    /**
+     * 更新操作
+     */
+    @Test
+    public void t2() throws ClassNotFoundException, SQLException {
+        //①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8","root","root");
+//③创建Statement对象
+        Statement statement = conn.createStatement();
+//④创建更新SQL语句
+        String sql="UPDATE user SET user_name='admin1',price=12.12,create_time=now() WHERE user_id=1000";
+//⑤执行sql语句,返回影响行数
+        int row = statement.executeUpdate(sql);
+//⑥打印影响行数
+        System.out.println("row:"+row);
+    }
+
+    /**
+     * 更新操作
+     */
+    @Test
+    public void t3() throws ClassNotFoundException, SQLException {
+//①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8","root","root");
+//③创建Statement对象
+        Statement statement = conn.createStatement();
+//④创建更新SQL语句
+        String sql="DELETE FROM user WHERE user_id=1000";
+//⑤执行sql语句,返回影响行数
+        int row = statement.executeUpdate(sql);
+//⑥打印影响行数
+        System.out.println("row:"+row);
+    }
+
+    /**
+     * 查询操作
+     */
+    @Test
+    public void t4() throws ClassNotFoundException, SQLException {
+//创建一个集合对象,将从数据库查询出来的数据保存到集合中
+        List<User> users = new ArrayList<>();
+//①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8","root","root");
+//③创建Statement对象
+        Statement statement = conn.createStatement();
+//④创建SQL语句
+        String sql="SELECT * FROM user";
+//⑤执行sql语句,返回结果集对象
+        ResultSet result = statement.executeQuery(sql);
+        while(result.next()){
+            User user = new User();
+            int userId = result.getInt("user_id");
+            user.setUserId(userId);
+            String userName = result.getString("user_name");
+            user.setUserName(userName);
+            double price = result.getDouble("price");
+            user.setPrice(price);
+            Date createTime = result.getDate("create_time");
+            user.setCreateTime(createTime);
+            users.add(user);
+        }
+//打印从数据库查询出来的对象
+        System.out.println(users);
+    }
+
+    /**
+     * 查询一个用户(因为JDBC没有提供一个查询单个对象的结果集,所以查询单个对象时也是使用ResultSet对象)
+     */
+    @Test
+    public void t5() throws ClassNotFoundException, SQLException {
+//创建一个集合对象,将从数据库查询出来的数据保存到集合中
+        List<User> users = new ArrayList<>();
+//①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8","root","root");
+//③创建Statement对象
+        Statement statement = conn.createStatement();
+//④创建SQL语句
+        String sql="SELECT * FROM user";
+//⑤执行sql语句,返回结果集对象
+        ResultSet result = statement.executeQuery(sql);
+        if(result.next()){
+            User user = new User();
+            int userId = result.getInt("user_id");
+            user.setUserId(userId);
+            String userName = result.getString("user_name");
+            user.setUserName(userName);
+            double price = result.getDouble("price");
+            user.setPrice(price);
+            Date createTime = result.getDate("create_time");
+            user.setCreateTime(createTime);
+            users.add(user);
+        }
+//打印从数据库查询出来的对象
+        System.out.println(users);
+    }
+
+
+    /**
+     * 查询数据库的总记录数
+     */
+
+    @Test
+    public void t6() throws ClassNotFoundException, SQLException {
+        //①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8","root","root");
+//③创建Statement对象
+        Statement statement = conn.createStatement();
+//④创建SQL语句
+        String sql="SELECT COUNT(*) AS count FROM user";
+//⑤执行sql语句,返回结果集对象
+        ResultSet result = statement.executeQuery(sql);
+        if(result.next()){
+            int count = result.getInt("count");
+            System.out.println(count);
+        }
+    }
+
+
+    /**
+     * 分页查询
+     */
+    @Test
+    public void t7() throws ClassNotFoundException, SQLException {
+        //创建一个集合对象,将从数据库查询出来的数据保存到集合中
+        List<User> users = new ArrayList<>();
+        //①加载数据库驱动
+        Class.forName("com.mysql.jdbc.Driver");
+        //②创建数据库连接
+        Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8","root","root");
+        //③创建Statement对象
+        Statement statement = conn.createStatement();
+        //④创建SQL语句
+        String sql="SELECT * FROM user limit 0,1";
+        //⑤执行sql语句,返回结果集对象
+        ResultSet result = statement.executeQuery(sql);
+        while(result.next()){
+            User user = new User();
+            int userId = result.getInt("user_id");
+            user.setUserId(userId);
+            String userName = result.getString("user_name");
+            user.setUserName(userName);
+            double price = result.getDouble("price");
+            user.setPrice(price);
+            Date createTime = result.getDate("create_time");
+            user.setCreateTime(createTime);
+            users.add(user);
+        }
+//打印从数据库查询出来的对象
+        System.out.println(users);
+    }
+
+
+    /**
+     * PreparedStatement接口的使用
+     * 添加操作
+     */
+    @Test
+    public void t8() throws ClassNotFoundException, SQLException {
+        //加载数据库的驱动
+        Class.forName("com.mysql.jdbc.Driver");
+//        创建数据库的连接
+        Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8", "root", "root");
+        String sql = "INSERT INTO user(user_name,price,create_time) VALUES(?,?,?)";
+//        预编译
+        PreparedStatement pre = conn.prepareStatement(sql);
+        pre.setString(1,"admin");
+        pre.setDouble(2,100.21);
+        pre.setDate(3,new Date(new java.util.Date().getTime()));
+//        执行进行绑定参数之后的sql语句
+        int i = pre.executeUpdate();
+        System.out.println(i);
+    }
+
+
+    /**
+     * 转账业务
+     * @throws ClassNotFoundException
+     * @throws SQLException
+     */
+    @Test
+    public void t9() throws ClassNotFoundException, SQLException {
+        Connection connection = null;
+        //执行
+        int row1=0;
+        int row2=0;
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+             connection = DriverManager.getConnection("jdbc:mysql://localhost/jdbc?characterEncoding=utf-8&useUnicode=true", "root", "root");
+            //取消默认提交
+            connection.setAutoCommit(false);
+            //创建Statement
+            Statement statement = connection.createStatement();
+            //准备sql语句
+            String sql1 = "UPDATE account SET money=money-500 WHERE account_name='z3'";
+            String sql2 = "UPDATE account SET money=money+500 WHERE account_name='l4'";
+            row1 = statement.executeUpdate(sql1);
+            //异常
+            int i = 1 / 0;
+            row2 = statement.executeUpdate(sql2);
+            System.out.println(row1);
+            System.out.println(row2);
+            //手动提交
+            connection.commit();
+        }catch (ClassNotFoundException | SQLException e){
+            //事物或滚
+            if(connection != null){
+                try {
+                    connection.rollback();
+                }catch (SQLException e1){
+                    e1.printStackTrace();
+                }
+            }
+            e.printStackTrace();
+        }
+    }
+
+
+
+}

+ 65 - 0
src/main/java/com/sf/jdbctest/User.java

@@ -0,0 +1,65 @@
+package com.sf.jdbctest;
+
+import java.util.Date;
+
+public class User {
+
+    private Integer userId;
+    private String userName;
+
+    private Double price;
+
+    private Date createTime;
+
+    public User() {
+    }
+
+    public User(Integer userId, String userName, Double price, Date createTime) {
+        this.userId = userId;
+        this.userName = userName;
+        this.price = price;
+        this.createTime = createTime;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "userId=" + userId +
+                ", userName='" + userName + '\'' +
+                ", price=" + price +
+                ", createTime=" + createTime +
+                '}';
+    }
+}

+ 40 - 0
src/main/java/com/sf/reflectiontest/Test.java

@@ -0,0 +1,40 @@
+package com.sf.reflectiontest;
+
+import javax.swing.plaf.ComponentInputMapUIResource;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+public class Test {
+
+    @org.junit.Test
+    public void t1(){
+        //     有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的字数。
+
+        String content = "VIP33考试题考试SIXSIXSIX";
+        HashMap<Character,Integer> map = new HashMap<>();
+        while (content.length()>0){
+            Character c = content.charAt(0);
+            content = content.substring(1);
+            Integer count = map.get(c);
+            if(count == null){
+                map.put(c,1);
+            }else {
+                map.put(c,count+1);
+            }
+        }
+
+        /**
+         * V=1
+         * I=6
+         * P=1
+         * 考=2
+         */
+
+        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
+            System.out.println(entry);
+        }
+
+
+    }
+}

+ 40 - 1
src/main/java/com/sf/reflectiontest/Test01.java

@@ -2,7 +2,7 @@ package com.sf.reflectiontest;
 
 import org.junit.Test;
 
-import java.util.Arrays;
+import java.util.*;
 
 /**
  * 反射的练习
@@ -41,5 +41,44 @@ public class Test01 {
         System.out.println(Arrays.toString(clazz.getDeclaredMethods()));
         System.out.println(Arrays.toString(clazz.getMethods()));
         System.out.println(clazz.getMethod("setId",Integer.class));
+
+
+        List<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.get(1);
+
+        Map map = new HashMap();
+        map.put("user","zhangsan");
+        map.get("user");
+
+    }
+
+
+
+
+
+
+    @Test
+    public void t2(){
+        String content = "中中国55kkfff";
+        HashMap<Character, Integer> map = new HashMap<>();
+        while (content.length() > 0) {
+            Character c = content.charAt(0);
+            content = content.substring(1);
+            Integer count = map.get(c);
+            if (count == null) {
+                map.put(c, 1);
+            } else {
+                map.put(c, count + 1);
+            }
+        }
+
+        Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
+        for (Map.Entry<Character, Integer> entry : entrySet) {
+            System.out.println(entry);
+        }
+
     }
 }

+ 7 - 0
src/main/java/com/sf/reflectiontest/User.java

@@ -0,0 +1,7 @@
+package com.sf.reflectiontest;
+
+public class User {
+
+
+
+}

+ 0 - 2
src/main/resources/ db.properties

@@ -1,2 +0,0 @@
-jdbcusername=root
-jdbcpassword=123456

+ 8 - 0
src/main/resources/db.properties

@@ -0,0 +1,8 @@
+#driverClass=com.mysql.jdbc.Driver
+#jdbcUrl=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8
+#jdbcUser=root
+#jdbcPassword=root
+url=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8
+username=root
+password=root
+driverClassName=com.mysql.jdbc.Driver

+ 0 - 2
target/classes/ db.properties

@@ -1,2 +0,0 @@
-jdbcusername=root
-jdbcpassword=123456

BIN
target/classes/com/sf/GuessNumber.class


BIN
target/classes/com/sf/Guest.class


BIN
target/classes/com/sf/MethodBlogs.class


BIN
target/classes/com/sf/MethodBlogsTest.class


BIN
target/classes/com/sf/T.class


BIN
target/classes/com/sf/day25/Test01.class


BIN
target/classes/com/sf/jdbctest/BaseDao.class


BIN
target/classes/com/sf/jdbctest/JDBCUtils.class


BIN
target/classes/com/sf/jdbctest/Test01.class


BIN
target/classes/com/sf/jdbctest/User.class


BIN
target/classes/com/sf/reflectiontest/Test.class


BIN
target/classes/com/sf/reflectiontest/Test01.class


BIN
target/classes/com/sf/reflectiontest/User.class


+ 8 - 0
target/classes/db.properties

@@ -0,0 +1,8 @@
+#driverClass=com.mysql.jdbc.Driver
+#jdbcUrl=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8
+#jdbcUser=root
+#jdbcPassword=root
+url=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8
+username=root
+password=root
+driverClassName=com.mysql.jdbc.Driver