您的位置:首页 > 数据库 > MySQL

JDBC+MYSQL初始学习

2016-04-19 17:24 507 查看


一、学习准备

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

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: