Spring JDBC总结

本文档详细介绍了如何创建一个Spring应用程序,专注于使用Spring JDBC模块来操作MySQL数据库。从项目初始化、添加依赖到配置数据源,再到创建DAO接口、实现类以及使用JdbcTemplate进行CRUD操作,每个步骤都有清晰的代码示例。最后通过测试类展示了查询用户信息的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建一个 Spring 应用程序

spring jdbc
步骤描述
1项目名:SpringDemo
2添加必须的spring库
3

spring JDBC指定添加新增库:

mysql-connector-java.jar        ,        org.springframework.jdbc.jar        和org.springframwork.transaction.jar.

4创建UserDao接口,及实现类
5创建UserService接口,及实现类
6在src文件下创建spring-jdbc.xml文件,配置数据源DataSource
7配置jdbc.properties文件,连接mysql数据库资源文件
8创建所有Bean和所需要的Test类

导入需要的jar包

 

 

spring-jdbc.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--使用注解注入-->
    <context:component-scan base-package="bdqn.springJDBC" />
    <!--        配置数据源-->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--            数据库驱动-->
            <property name="driverClassName" value="${driver}"></property>
<!--            连接数据库的URL-->
            <property name="url" value="${url}"/>
<!--            连接数据库的用户名-->
            <property name="username" value="${user}"/>
<!--            连接数据库的密码-->
            <property name="password" value="${password}"/>
        </bean>
<!--    指定引入文件地址-->
    <context:property-placeholder location="classpath:jdbc.properties" ></context:property-placeholder>
<!--   配置jdbc模板  注入数据源-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>

jdbc.properties文件

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/users

user=root

password=root

创建UserDao接口

public interface UserDao {
    /**
     * 创建用户表
  
     */
    void createUserTable();

    /**
     * 查询用户名
     */
    void checkUname( Integer uid);

    /**
     * 修改用户名
     * @param newName
     * @param oldName
     */
    void updateUserName(String newName,String oldName);

    /**
     * 添加1个用户信息
     * @param uname
     * @param upwd
     */
    void addUser(String uname,String upwd);

    /**
     * 删除一个用户信息
     * @param uname
     */
    void deleteUser(String uname);

    /**
     * 查询一个map集合的用户信息
     * @return
     */
    Map<String, Object> queryUserMap();

    /**
     * 查询一个list集合的用户信息
     * @return
     */
    List queryUserList();

    /**
     * 查询指定用户信息
     * @param uname
     * @return
     */
    User queryUser(String uname);
}

实现接口

/**
 * 使用注解注入dao层
 */
@Repository
public class UserDaoImpl implements UserDao {
     //@Resource 注解不能注解static对象属性
    @Resource
    JdbcTemplate jdbcTemplate ;
……………………………………………………
}

在实现类UserDaoImpl中使用JdbcTemplate 的excute方法创建表User

 /**
     * 创建用户表
     */
    @Override
    public void createUserTable() {
        String sql="CREATE TABLE `user`(\n" +
                "\tuid INT(4),\n" +
                "\tuname VARCHAR(50),\n" +
                "\tupwd VARCHAR(20)\n" +
                ");";
        jdbcTemplate.execute(sql);
    }

通过uid查询指定的Uname 

 /**
     * 查询用户名
     */
    @Override
    public void checkUname( Integer uid) {
        String sql="SELECT uname FROM USER WHERE uid=?;";
        String uname = jdbcTemplate.queryForObject(sql, new Object[]{uid}, String.class);
        System.out.println("查询的姓名为:"+uname);
    }

修改用户名

/**
     * 修改用户名
     * @param newName
     * @param oldName
     */
    @Override
    public void updateUserName( String newName, String oldName) {
         String sql="\n" +
                "UPDATE  USER SET uname=? WHERE uname=?;";
//        方法一:直接添加修改的args
        int update = jdbcTemplate.update(sql, "hh", "lhh");

        //方法二:使用数组对象存放修改参数
        Object[] objects=new Object[]{"hh","lhh"};

        int update1 = jdbcTemplate.update(sql, objects);
        System.out.println("①返回修改行数:"+update);//①返回修改行数:1
        System.out.println("②返回修改行数:"+update1);//②返回修改行数:0
    }

添加一行用户信息

/**
     * 添加1个用户信息
     * @param uname
     * @param upwd
     */
    @Override
    public void addUser(String uname, String upwd) {
        String sql="INSERT INTO `user` VALUE(NULL,?,?); ";
        int update = jdbcTemplate.update(sql, uname, upwd);
        System.out.println("返回添加记录数:"+update);
    }

删除用户

 /**
     * 删除一个用户信息
     * @param uname
     */
    @Override
    public void deleteUser( String uname) {
        String sql="DELETE FROM USER WHERE uname= ? ;";
        int update = jdbcTemplate.update(sql, uname);
        System.out.println("返回删除记录数:"+update);

    }

查询一个map集合的用户信息

/**
     * 查询一个map集合的用户信息
     * @return
     */
    @Override
    public Map<String, Object> queryUserMap() {
        String sql="SELECT * FROM USER  ;";
        Map<String, Object> objectMap = jdbcTemplate.queryForMap(sql);
        return objectMap;
    }

查询一个list集合的用户信息

 /**
     * 查询一个list集合的用户信息
     * @return
     */
    @Override
    public List queryUserList() {
        String sql="SELECT * FROM USER;";
        RowMapper rowMapper=new BeanPropertyRowMapper(User.class);
        List l = jdbcTemplate.query(sql, rowMapper);
        return l;
    }

查询出指定用户user

/**
     * 查询指定用户信息
     * @param uname
     * @return
     */
    @Override
    public User queryUser( String uname) {
        String sql="SELECT * FROM USER WHERE uname = ?;";
        RowMapper mapper=new BeanPropertyRowMapper(User.class);
        User user = (User) jdbcTemplate.queryForObject(sql, mapper, uname);
        return user;
    }

测试类Test

    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("spring-jdbc.xml");
        UserDaoImpl userDaoImpl = context.getBean("userDaoImpl", UserDaoImpl.class);
        List list = userDaoImpl.queryUserList();
        for (int i = 0; i < list.size(); i++) {
            System.out.println("第"+i+"个user:"+list.get(i));
        }

    }

输出结果为:

第0个user:User{uid=1, uname='admin', upwd='a'}
第1个user:User{uid=5, uname='hh', upwd='a'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值