Spring入门案例之JDBC

Posted dp06134816-login

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring入门案例之JDBC相关的知识,希望对你有一定的参考价值。

Spring连接数据库的实现增删改查

数据库连接JDBC

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连接数据库程序实现

 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的主要内容,如果未能解决你的问题,请参考以下文章

mybatis入门案例

Spring Boot入门之获取MySQL数据

❤️爆肝万字!一文最全总结之Spring从入门到入土❤️(建议收藏)

❤️爆肝万字!一文最全总结之Spring从入门到入土❤️(建议收藏)

Spring框架之JDBC的基本使用

Spring之JdbcTemplate使用