时间:2021-07-01 10:21:17 帮助过:38人阅读
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
JDBC连接数据库的流程及其原理如下:
(1)在开发环境中加载指定数据库的驱动程序。不如你使用的是MySQL,那么需要去下载MySQL支持JDBC的驱动程序(mysql-connector-java-5.1.18-bin.jar)。
(2)在Java程序中加载驱动程序。在Java程序中,可以通过“Class.forName("指定数据库的驱动程序")”的方式来加载添加到开发环境中的驱动程序,例如加载MySQL的数据驱动程序的代码为Class.forName("com.mysql.jdbc.Driver")。
(3)创建数据连接对象。通过DriverManager类创建数据库连接对象Connection。DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法根据数据库的URL、用户名和密码,创建一个JDBC Connection对象,例如:Connection connection = DriverManager.getConnection("连接数据库的URL","用户名","密码")。其中URL = 协议名 + IP地址(域名)+端口+数据库名称;用户名和密码是指登录数据库所使用的用户名和密码。
(4)创建Statement对象。Statement类的主要是用于执行静态SQL语句并返回它所生成结果的对象。通过Connection对象的createStatement()方法可以创建一个Statement对象。例如:Statement statement = connection.createStatement()。
(5)调用Statement对象的相关方法执行相对应的SQL语句。通过execuUpdate方法来对数据更新,包括插入和删除等操作;通过调用Statement对象的executeQuery方法进行数据的查询,而查询的结果会得到ResultSet对象,ResultSet表示执行查询数据库返回的数据的集合,ResultSet对象具有可以指向当前数据行的指针。通过该对象的next方法,使得指针指向下一行,然后将数据以列号或者字段名取出,如果next方法返回null,则表示下一行中没有数据存在。
(6)关闭数据库连接。使用完数据库或者不需要访问数据库时,通过Connection的close方法及时关闭数据库连接。
Spring中的JDBC连接与直接使用JDBC去连接还是有所差别的,Spring对JDBC做了大量封装,消除了冗余代码,使得开发量大大减少。下面举个例子简单认识Spring中的JDBC操作。
需要的jar包:

目录结构:

SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` int(100) NULL DEFAULT NULL, `birthday` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `tall` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, ‘张三‘, 18, ‘2000-11-12‘, ‘180‘); INSERT INTO `user` VALUES (2, ‘李四‘, 19, ‘1998-05-23‘, ‘178‘); INSERT INTO `user` VALUES (3, ‘王五‘, 20, ‘1997-09-03‘, ‘189‘); INSERT INTO `user` VALUES (4, ‘Tom‘, 21, ‘1996-01-21‘, ‘176‘); INSERT INTO `user` VALUES (5, ‘Jike‘, 17, ‘2001-01-23‘, ‘173‘); SET FOREIGN_KEY_CHECKS = 1;
Dao层:
package demo10.dao;
import demo10.pojo.User;
/**
* @Author
* @Date 2020/7/2 15:24
* @Version 1.0
*/
public interface UserDao {
/*
* 添加
* */
boolean addUser(User user);
/*
* 删除
* */
boolean deleteUser(Integer id);
/*
* 修改
* */
boolean updateUser(User user);
/*
* 查询
* */
User findUserById(Integer id);
}
Impl:
package demo10.dao.impl;
import demo10.dao.UserDao;
import demo10.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* @Author
* @Date 2020/7/2 15:35
* @Version 1.0
*/
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public boolean addUser(User user) {
boolean flag = false;
String addSql = "insert into user values(?,?,?,?,?)";
int row = jdbcTemplate.update(addSql,user.getId(),user.getName(),user.getAge(),user.getBirthday(),user.getTall());
if(row > 0){
flag = true;
}
return flag;
}
@Override
public boolean deleteUser(Integer id) {
boolean flag = false;
String deleteSql = "delete from user where id = ?";
int row = jdbcTemplate.update(deleteSql,id);
if(row > 0){
flag = true;
}
return flag;
}
@Override
public boolean updateUser(User user) {
boolean flag = false;
String updateSql = "update user set name = ?,age = ?,birthday = ? ,tall =? where id = ?";
int row = jdbcTemplate.update(updateSql,user.getName(),user.getAge(),user.getBirthday(),user.getTall(),user.getId());
if(row > 0){
flag = true;
}
return flag;
}
@Override
public User findUserById(Integer id) {
User user = new User();
// String findAllSql="select * from user where id=?";
return user;
}
}
Pojo:
package demo10.pojo;
/**
* @Author
* @Date 2020/7/2 15:21
* @Version 1.0
*/
public class User {
private Integer id;
private String name;
private Integer age;
private String birthday;
private String tall;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getTall() {
return tall;
}
public void setTall(String tall) {
this.tall = tall;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name=‘" + name + ‘\‘‘ +
", age=" + age +
", birthday=‘" + birthday + ‘\‘‘ +
", tall=‘" + tall + ‘\‘‘ +
‘}‘;
}
}
Service:
package demo10.service;
import demo10.pojo.User;
import java.util.List;
/**
* @Author
* @Date 2020/7/2 15:41
* @Version 1.0
*/
public interface UserService {
/*
* 添加
* */
boolean addUser(User user);
/*
* 删除
* */
boolean deleteUser(Integer id);
/*
* 修改
* */
boolean updateUser(User user);
/*
* 查询
* */
User findUserById(Integer id);
}
ServiceImpl:
package demo10.service.impl;
import demo10.dao.UserDao;
import demo10.pojo.User;
import demo10.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Author
* @Date 2020/7/2 15:42
* @Version 1.0
*/
public class UserServiceImpl implements UserService {
/*
* Spring自动注入
* */
@Autowired
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public boolean addUser(User user) {
return userDao.addUser(user);
}
@Override
public boolean deleteUser(Integer id) {
return userDao.deleteUser(id);
}
@Override
public boolean updateUser(User user) {
return userDao.updateUser(user);
}
@Override
public User findUserById(Integer id) {
return userDao.findUserById(id);
}
}
junit:
package demo10.junit;
import demo10.pojo.User;
import demo10.service.UserService;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @Author
* @Date 2020/7/2 15:56
* @Version 1.0
*/
public class UserTest {
private ApplicationContext ac;
User user = new User();
/**
* 加载配置文件
*/
@Before
public void into(){
ac = new ClassPathXmlApplicationContext("jdbc.xml");
}
@Test
public void userAddTest(){
user.setId(7);
user.setName("BEYOND");
user.setAge(48);
user.setBirthday("1975-06-25");
user.setTall("176");
UserService userService = (UserService)ac.getBean("userService");
boolean boo = userService.addUser(user);
System.out.println(boo);
}
@Test
public void userDeletsTest(){
UserService userService=(UserService)ac.getBean("userService");
boolean boo = userService.deleteUser(176);
System.out.println(boo);
}
@Test
public void userUpdate(){
User user = new User();
user.setId(7);
user.setName("dupo");
user.setAge(23);
user.setBirthday("1997-06-13");
user.setTall("178");
UserService userService = (UserService)ac.getBean("userService");
boolean boo = userService.updateUser(user);
System.out.println(boo);
}
@Test
public void userFindAll(){
}
}


—————————————————————————————————————— 完毕--————————————————————————————————————————————————
Spring入门案例之JDBC(五)
标签:rman 实现 使用 返回 跨平台 beans mic java程序 ash