• JDBC+MYSQL初始学习


    JDBC+MYSQL初始学习

    一、学习准备

    Eclipse 开发工具  + mysql数据库+navicat 数据库连接工具

    Mysql的数据库连接驱动jar包  + testing测试集成+maven工具集成

    Jar的获取方法:

    1、直接下载需要的jar,导入项目中使用。

    2、在maven工程中加入依赖:本文使用的maven依赖:

    <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
    </dependency>
    <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.0</version>
    </dependency>

    二、JDBC简单实用步骤:

    Jdbc连接数据库操作,主要分为三个步骤:本文以mysql为例操作说明:

    2.1加载驱动程序

    Class.forName("com.mysql.jdbc.Driver");

    2.2获取数据库连接

    conn = DriverManager.getConnection(URL, USER, PASSWORD);

    2.3对数据库的表结构进行CURD操作

    三、JDBC增、删、改、查

    3.1 通过navicat 连接本地mysql 创建user表结构:

    3.2 建立相关的类来实现jdbc的crud的操作

    3.1.1 模型类User

      User类用于和数据库user表映射,方便CURD的实时操作。

    /**
     * 
     */
    package com.lilin.maven.service.jdbc;
    
    /**
     * @author lilin
     * 
     */
    public class User {
    
        private Integer id;
    
        /**
         * 用户名称
         */
        private String name;
    
        /**
         * 用户密码
         */
        private String password;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String toString() {
            return "user 的名称是" + name + " user的密码是:" + password;
        }
    
    }

    3.1.2 工具类JdbcUtil 

      工具类主要定义了数据库连接的相关属性:URL 、USER、PASSWORD

      工具类在静态块中获取了数据库的连接,存放于私有CONN中,同时对外提供了访问连接的公共方法:getConnection

    /**
     * 
     */
    package com.lilin.maven.service.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    /**
     * @author lilin
     * 
     */
    public class JdbcUtil {
        public static final String URL = "jdbc:mysql://127.0.0.1:3306/test";
    
        public static final String USER = "root";
    
        public static final String PASSWORD = "1";
    
        private static Connection conn = null;
    
        /**
         * 静态块 获取数据库的连接
         */
        static {
            try {
                // 1.加载驱动程序
                Class.forName("com.mysql.jdbc.Driver");
                // 2.获取数据库连接
                conn = DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 提供获取连接的调用方法
         * 
         * @return
         */
        public static Connection getConnection() {
            return conn;
        }
    }

    3.1.3 逻辑层类UserService

      UserService类,主要是通过调用工具类,获取数据库连接,然后使用连接,配合好编写的sql语句,来对数据库中的user表来进行CURD操作,包含了一系列的常用的处理。

    /**
     * 
     */
    package com.lilin.maven.service.jdbc;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author lilin
     * 
     */
    public class UserService {
    
        private Connection connection = JdbcUtil.getConnection();
    
        /**
         * 新增用户信息
         * 
         * @param user
         * @throws Exception
         */
        public void addUser(User user) throws Exception {
            String sql = " insert into user(NAME,PASS_WORD)values(?,?)";
            // 预编译sql语句 在excute的时候真正执行
            PreparedStatement ptmt = connection.prepareStatement(sql);
            // 传递参数 补充完整的sql
            ptmt.setString(1, user.getName());
            ptmt.setString(2, user.getPassword());
            ptmt.execute();
        }
    
        /**
         * 删除用户信息
         * 
         * @param user
         * @throws Exception
         */
        public void deleteUser(Integer id) throws Exception {
            String sql = " delete from user where ID=?";
            // 预编译sql语句 在excute的时候真正执行
            PreparedStatement ptmt = connection.prepareStatement(sql);
            // 传递参数 补充完整的sql
            ptmt.setInt(1, id);
            ptmt.execute();
        }
    
        /**
         * 更新用户信息
         * 
         * @param user
         * @throws Exception
         */
        public void updateUser(User user) throws Exception {
            String sql = " update user set NAME=? ,PASS_WORD=? where ID=?";
            // 预编译sql语句 在excute的时候真正执行
            PreparedStatement ptmt = connection.prepareStatement(sql);
            // 传递参数 补充完整的sql
            ptmt.setInt(3, user.getId());
            ptmt.setString(1, user.getName());
            ptmt.setString(2, user.getPassword());
            ptmt.execute();
        }
    
        /**
         * 查询单个用户信息
         * 
         * @param user
         * @throws Exception
         */
        public User getUserByName(String name) throws Exception {
            String sql = " select * from  user where NAME=?";
            // 预编译sql语句 在excute的时候真正执行
            PreparedStatement ptmt = connection.prepareStatement(sql);
            // 传递参数 补充完整的sql
            ptmt.setString(1, name);
            ResultSet resultSet = ptmt.executeQuery();
            User user = null;
            while (resultSet.next()) {
                user = new User();
                user.setId(resultSet.getInt("ID"));
                user.setName(resultSet.getString("NAME"));
                user.setPassword(resultSet.getString("PASS_WORD"));
            }
            return user;
        }
    
        /**
         * 查询所有的用户信息
         * 
         * @return
         * @throws Exception
         */
        public List<User> getUsers() throws Exception {
            // 3.操作数据库 实现增删改查
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select * from user");
            List<User> list = new ArrayList<User>();
            User user = null;
            while (resultSet.next()) {
                user = new User();
                String name = resultSet.getString("NAME");
                String passWord = resultSet.getString("PASS_WORD");
                user.setName(name);
                user.setPassword(passWord);
                list.add(user);
            }
            return list;
        }
    
    }

    3.1.4 testNG测试类 jdbctest

      JdbcTest中,实现了多个测试方法,userserice中的CURD的方法,全部有对应的测试function:通过运行测试方法,以及配合使用navicat实时查询数据库的user表的数据的实时变化,以便于验证JDBC对于mysql的数据库操作的正确性。

    /**
     * 
     */
    package com.lilin.maven.service.jdbc;
    
    import java.util.List;
    import java.util.Scanner;
    
    import org.testng.annotations.Test;
    
    /**
     * @author lilin
     * 
     */
    public class JdbcTest {
    
        private UserService userService = new UserService();
    
        @Test
        public void testGetUsers() throws Exception {
            List<User> users = userService.getUsers();
            for (User user : users) {
                System.out.println(user);
            }
        }
    
        @Test
        public void testAddUser() throws Exception {
            User user = new User();
            user.setName("李林");
            user.setPassword("12345");
            userService.addUser(user);
        }
    
        @Test
        public void testUpdateUser() throws Exception {
            User user = new User();
            user.setId(1);
            user.setName("bb");
            user.setPassword("12345");
            userService.updateUser(user);
        }
    
        @Test
        public void testDeleteUser() throws Exception {
            userService.deleteUser(4);
        }
    
        @Test
        public void testgetUserByName() throws Exception {
            User user = userService.getUserByName("bb");
            System.out.println(user);
        }
    
    }
  • 相关阅读:
    parallel-fastq-dump是一个大坑
    生信软件安装(2)
    2018年一些感悟
    raw data/PF data/Q30 data/clean data的不同
    专题
    结构体
    指针和数组
    指针
    函数的声明
    C语言中的函数
  • 原文地址:https://www.cnblogs.com/lilin0719/p/5373132.html
Copyright © 2020-2023  润新知