请选择 进入手机版 | 继续访问电脑版
  • 关注官方微信 微信公众号 添加方式:
    1:搜索微信号(gogolinux
    2:扫描左侧二维码
  • 登录 注册
  • 一起学LINUX - GOGOLINUX

    查看: 90|回复: 0

    如何使用Spring对数据库进行CURD?

    [复制链接]

    2

    主题

    2

    帖子

    8

    积分

    新手上路

    Rank: 1

    积分
    8
    发表于 2020-5-10 14:12:50 | 显示全部楼层 |阅读模式

    作为一名程序员,CURD(增删改查)是一件必不可少的事情,甭管你是初级程序员还是高级程序员都会和数据库打交道。那么在Java中如何通过Spring 框架来对数据库进行操作呢?本文将带你一起来学习。Spring框架针对数据库提供了JdbcTemplate 类,JdbcTemplate 是Spring 数据抽象层的基础,其他更高层次的抽象类都是构建在其基础之上,JdbcTemplate 是Spring JDBC的核心类。JdbcTemplate 继承自抽象类JdbcAccessor,同时实现了JdbcOperations 接口,JdbcTemplate定义在了JdbcTemplate类中从而可以使用增删改查来对数据库进行操作。JdbcTemplate 的直接父类是JdbcAccessor,它提供了一些访问数据库时所需要使用的公共属性,包括DataSource以及SQLExceptionTranslator 等。前者用于获取数据库连接以及引入对数据库连接的缓冲池以及分布式事务等支出。后者是对SQLException 进行转译工作。首先,我来说下本次文档所需要准备的工具,具体如下:

    • idea 社区版
    • maven,idea 自带的
    • mysql 或Mariadb
    接下来,我们先简单介绍下Spring JDBC 模块,它主要包括core、dataSource、object、support四个包,分别提供的功能如下:

    • core 包括JDBC的核心功能,例如JdbcTemplate类、simpleJdbcInsert类、simpleJdbcCall 类以及NamedParameterJdbcTemplate类。
    • dataSource 包括了访问数据库的实用工具类。
    • object 以OOP的方式访问数据库,它允许执行查询操作并将返回结果作为业务对象,可以在数据表和业务对象的属性直接映射查询关系。
    • support 包括core 和object包的支持类,例如提供一些SQLException类。
    我们了解了这些模块的功能,接来下我们看看怎么去配置JDBC,下面是 JDBC的XML配置文件:


















    在上述xml 文件中的beans中定义了两个bean,分别是dataSource、jdbcTemplate。其中dataSource的类是由org.springframework.jdbc.datasource.DriverManagerDataSource 提供,包含了4个属性分别对应的是:

    • driverClassName,它是数据库的驱动,值是com.mysql.jdbc.Driver;
    • url 数据库的访问地址,如上所示,jdbc:mysql://localhost:3306/spring_db 中的localhost 为你的数据库地址 3306 为数据库的连接断开,斜杠后面的spring_db 表示需要连接的数据库名称;
    • username 数据库的用户名;
    • password 数据库的密码;
    下面我们通过实例的方式来讲解如何通过JDBC来对数据库进行操作,我们需要进行以下准备工作。首先,我们需要配置maven的pom.xml 下载所需要的jar包,包括spring-jdbc、mysql-connector-java:
    org.springframework
    spring-jdbc
    4.3.6.RELEASE



    mysql
    mysql-connector-java
    8.0.19

    第二步,需要有一个可以反问的数据库,比如我的数据库设置密码为rootmysqladmin -u root password root
    第三步.创建一个spring_db 的表,并且需要授权用户远程访问,如果是本地这一步可以不用做MariaDB [(none)]> create database spring_db;
    Query OK, 1 row affected (0.000 sec)
    第四步,在idea 工程中新建一个com.ssm.jdbc 的包,并在该包中创建一个JdbcTempTest的测试类,首先我们加载xml 配置,配置文件就是上面的xml配置文件,我们创建一个数据表为user_table,使用jdbctemp.execute(String s) 方法执行SQL语句。@Test
    public void TestJdbcTemplate {
    //加载配置
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
    //获取JdbcTemplate实例
    JdbcTemplate jdbctemp = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    jdbctemp.execute("create table user_table(" +
    "id int primary key auto_increment," +
    "username varchar(80)," +
    "password varchar(40))");
    }
    我们执行该测试类,然后进入数据库,我们可以看到该表已经被创建出来了:MariaDB [(none)]> use spring_db;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    MariaDB [spring_db]> show tables;
    ++
    | Tables_in_spring_db |

    | user_table |

    1 row in set (0.000 sec)

    MariaDB [spring_db]>
    下面,我们通过jdbc 来实现增删改查操作,首先,我们要创建一个类,名字为User,这个User 类中包含了用户的id、用户名和密码信息,并设置其set和get属性:package com.ssm.jdbc;

    public class User {
    private Integer id;
    private String username;
    private String password;
    public Integer getId {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getUsername {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    public String getPassword {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public String toString {
    return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
    }
    }
    然后我们创建一个UserDao 接口,该接口定义了添加、更新、删除、根据ID查询和查询所有用户的方法:package com.ssm.jdbc;

    import java.util.List;

    public interface UserDao {
    public int addUser(User user);
    public int updateUser(User user);
    public int deleteUser(int id);
    //通过id查询用户
    public User findUserById(int id);
    //查询所有用户
    public List findAllUser;

    }
    接下来,我们来对UserDao的接口进行实现,在这个方法中我们对具体的增删改查逻辑进行设置,直接看代码吧:package com.ssm.jdbc;

    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;

    import java.util.List;

    public class UserDaoImpl implements UserDao {
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
    }
    @Override
    public int addUser(User user) {
    String sql="insert into user_table(username,password) value(?,?)";
    Object obj=new Object{
    user.getUsername,
    user.getPassword
    };
    int num=this.jdbcTemplate.update(sql,obj);
    return num;
    }

    @Override
    public int updateUser(User user) {
    String sql="update user_table set username=?,password=? where id=?";
    Object params=new Object{

    user.getPassword,
    user.getId
    };
    int num=this.jdbcTemplate.update(sql,params);
    return num;
    }

    @Override
    public int deleteUser(int id) {
    String sql="delete from user_table where id=?";
    int num=this.jdbcTemplate.update(sql,id);
    return num;
    }

    @Override
    public User findUserById(int id) {
    String sql="select * from user_table where id=?";
    RowMapper rowMapper=new BeanPropertyRowMapper(User.class);
    return this.jdbcTemplate.queryForObject(sql,rowMapper,id);
    }

    @Override
    public List findAllUser {
    String sql="select * from user_table";
    newclass);
    return this.jdbcTemplate.query(sql,rowMapper);
    }
    }
    然后我们在jdbc.xml 中加入bean,加入UserDao:




    好了,一切准备就绪,我们接来下通过测试类来测试下具体的增删改查。首先来测试下添加用户方法,如图下所示:@Test
    public void addUserTest{
    //加载jdbc.xml 配置文件
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
    //获取UserDao实例
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    //创建user实例
    User user = new User;
    //设置属性
    user.setUsername("张三");
    user.setPassword("123");
    //添加用户
    int num = userDao.addUser(user);
    if (num > 0) {
    System.out.println("Success insert "+num+" data");
    }else {
    System.out.println("erro");
    }
    }
    更新用户:@Test
    public void updateUserTest{
    //加载jdbc.xml 配置文件
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
    //获取UserDao实例
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    //创建user实例
    User user = new User;
    //设置属性
    user.setId(1);
    user.setUsername("李四");
    user.setPassword("12345");
    //更新用户信息
    int num = userDao.updateUser(user);
    if (num > 0) {
    System.out.println("Success update "+num+" data");
    }else {
    System.out.println("erro");
    }
    }
    删除用户:@Test
    public void delUserTest{
    //加载jdbc.xml 配置文件
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
    //获取UserDao实例
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    //删除,传入ID值
    int num = userDao.deleteUser(1);
    if (num > 0) {
    System.out.println("Success delete "+num+" data");
    }else {
    System.out.println("erro");
    }
    }
    查询用户信息,包括了根据ID查询和查询所有:@Test
    public void findUserTest{
    //加载jdbc.xml 配置文件
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
    //获取UserDao实例
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    //根据ID查询用户
    User user = userDao.findUserById(2);
    System.out.println(user);

    }

    @Test
    public void findAllUserTest{
    //加载jdbc.xml 配置文件
    new"jdbc.xml");
    //获取UserDao实例
    "userDao");
    //根据ID查询用户
    List list = userDao.findAllUser;
    for (User user:list){
    System.out.println(user);
    }

    }
    好了,以上就是关于如果使用Spring JDBC 操作数据库实现增删改查的方法。
    更多精彩推荐

    你点的每个“在看”,我都认真当成了喜欢

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    分享到:
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    官方微博:

    官方头条号:

    官方微信

    手机访问:

    官方微信

    QQArchiver 手机版 小黑屋 一起学LINUX - GOGOLINUX 闽ICP备18025837号-1 Discuz! X3.4 Powered by © 2001-2013 Comsenz Inc. 

    本站资源均来自互联网或会员发布,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

    快速回复 快速发帖 返回顶部 返回列表