Spring整合JDBC的xml配置版本

前言

Spring框架中提供了一个可以操作数据库的对象,这个对象封装了对JDBC实现的细节,提供了一套模版,这个模版类是jdbcTemplate,该类在spring-jdbc.jar包中

演示JdbcTemplate模版类对数据库的操作

开发步骤:

  • 导包:Spring的核心包+spring-jdbc+数据库驱动jar包+连接池jar包(c3p0连接池)+spring-test测试包+Junit
  • 准备数据库user表
  • 书写dao层接口(书写CRUD增删该查方法)
  • 书写dao层接口实现类(书写CRUD增删该查方法)
  • 配置Spring核心主配置文件
  • 使用Junit进行单元测试
xml配置版本

1、导包:pom配置文件中添加jar包所需依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2、 准备数据库user表(实体类同数据库字段一致即可)

@Component("user")/*此注释  将该类交给Spring容器管理*/
public class User implements Serializable {
    @Value("1")
    private Integer u_id;
    @Value("小孙")
    private String u_name;
    @Value("20")
    private Integer u_age;
    @Value("10000")
    private Double u_salary;

    public User(Integer u_id, String u_name, Integer u_age, Double u_salary) {
        this.u_id = u_id;
        this.u_name = u_name;
        this.u_age = u_age;
        this.u_salary = u_salary;
    }

    public User() {
    }

    public Integer getU_id() {
        return u_id;
    }

    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }

    public String getU_name() {
        return u_name;
    }

    public void setU_name(String u_name) {
        this.u_name = u_name;
    }

    public Integer getU_age() {
        return u_age;
    }

    public void setU_age(Integer u_age) {
        this.u_age = u_age;
    }

    public Double getU_salary() {
        return u_salary;
    }

    public void setU_salary(Double u_salary) {
        this.u_salary = u_salary;
    }

    @Override
    public String toString() {
        return "User{" +
                "u_id=" + u_id +
                ", u_name='" + u_name + '\'' +
                ", u_age=" + u_age +
                ", u_salary=" + u_salary +
                '}';
    }
}

3、书写dao层接口

/*
	dao层接口
*/
public interface UserDao {
    //CRUD
    //添加用户
    void addUser(User user);
}

4、书写dao层接口实现类

/**
	dao层接口实现类
*/
@Repository("userDao")
public class UserDaoImpl implements UserDao {
    @Autowired//前提是Spring容器中含有该对象
    private JdbcTemplate jdbcTemplate;
    @Override//对于数据库来说  增删改  都是更新
    public void addUser(User user) {
       //添加用户
        int num = jdbcTemplate.update("insert into user values(null,?,?,?)", user.getU_name(), user.getU_age(), user.getU_salary());
        if(num > 0){
            System.out.println("数据添加成功!");
        }else {
            System.out.println("数据添加失败!");
        }
    }
}

5、数据库屏连接配置信息(db.properties)与Spring主配置文件(applicationContext.xml)如下:

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/db_spring?characterEncoding=UTF-8
jdbc.user=root
jdbc.password=root
<?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 http://www.springframework.org/schema/context/spring-context.xsd">
    <!--组件扫描-->
    <context:component-scan base-package="com.zhiyou100"/>
    <!--context:property-->
    <!--引入db.properties文件到spring容器中-->
    <context:property-placeholder location="db.properties"/>
    <!--配置数据源-->
    <!--采用数据库连接池  依赖于数据源DataSource    ComboPooledDataSource-->
    <!--把ComboPooledDataSource该对象注入到Spring到容器中-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
        <property name="user" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--配置JdbcTemplate对象-->
    <!--该对象也依赖于数据源-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--属性注入   采用set方式-->
        <property name="dataSource" ref="dataSource"/>
    </bean>
</beans>

6、使用Junit单元进行测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
//@Configuration   配置Spring   一个主配置类
//@ContextConfiguration  读取applicationContext.xml
public class JdbcTemplateTest {
    //进行dao接口的属性注入
    @Autowired
    private UserDao userDao;
    @Autowired
    private User user;//此时user值就从容器中注入进来

    /**
     * 测试   addUser
     */
    @Test
    public void testAddUser(){
        userDao.addUser(user);
    }
}

结果如下:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springmvc 框架整合 <!-- 数据库配置 --> <?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <import resource="beanContext-area-controller.xml" /> <import resource="beanContext-area-service.xml" /> <import resource="time.xml" /> <!-- 自动扫描bean,把作了注解的类转换为bean --> <context:component-scan base-package="com.test.controller" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- apache.dbcp连接池的配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/newsd?characterEncoding=utf-8" /> <property name="username" value="paytb" /> <property name="password" value="tang0330" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="30" /> <property name="maxWait" value="500" /> <property name="defaultAutoCommit" value="true" /> </bean> <!-- jdbc注入 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> </beans> <!-- controller配置 --> <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <bean name="testController" class="com.test.controller.TestController" scope="prototype" > <property name="usersService"><ref bean="usersService" /></property> </bean> </beans> <!-- service注入 --> <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <bean id="usersService" class="com.test.service.imp.UsersServiceImpl" scope="prototype"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans> <!-- 定时器配置 --?> <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <bean id="querytestController" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testController" /> <property name="targetMethod" value="query" /> <property name="concurrent" value="false" /> </bean> <bean id="querytestControllerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="querytestController" /> <property name="startDelay" value="10000" /> <property name="repeatInterval" value="1000" /> </bean> <bean id="sfb2" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="querytestControllerTrigger" /> </list> </property> </bean> </beans>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值