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);
    }

}
复制代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值