Spring整合JDBC的全文注解配置版本

  • @Configuration

作用:就是用来替代spring的xml文件
被该注解标记的类,是spring的一个主配置类,当容器创建的时候会从该类上加载注解

  • @ComponentScan

作用:就是用来进行组件扫描
等价与:<context:component-scan base-package=“com.zhiyou100”>
被该注解标记的类可以进行组件扫描,使用value属性来识别包名

  • @PropertySource

作用:就是用来导入db.properties数据源文件到Spring容器中
等价于:<context:properties-placeholder location=“classpath:db.properties”>

  • @Bean

作用:用来在Spring容器中构建对象
等价于<bean id=“dataSource” class=“com.mchange.v2.c3p0.ComboPooleDataSource”>

  • @Import

作用:就是用来引入其他配置文件
等价于:<import resource=“classpath:xx.properties(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>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
    </dependencies>

2、编写jdbc工具类DBUtil配置代码如下:

/**
 * 配置连接池   连接  工具类等信息
 */
@Component
public class JDBCUtil {
    @Value("${jdbc.driverClass}")
    private String driverClass;
    @Value("${jdbc.jdbcUrl}")
    private String jdbcUrl;
    @Value("${jdbc.user}")
    private String user;
    @Value("${jdbc.password}")
    private String password;

    //假定使用c3p0连接池
    /**
     *  配置数据源
     *     采用数据库连接池  依赖于数据源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>
     */
    //创建ComboPooledDataSource对象进入Spring对象容器中0
    @Bean(name = "dataSource")
    public DataSource getDataSource(){
        //构建ComboPooledDataSource对象   手动注入数据源信息
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        try {
            dataSource.setDriverClass(driverClass);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
        dataSource.setJdbcUrl(jdbcUrl);
        dataSource.setUser(user);
        dataSource.setPassword(password);
        return dataSource;
    }
    @Bean(name = "jdbcTemplate")
    public JdbcTemplate createJdbcTemplate(@Autowired DataSource dataSource){
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }
}

4、编写spring主配置类信息如下:

/**
 * Spring的主配置类
 * 注解意思   同上有解释说明
 */
@Configuration
@ComponentScan("com.zhiyou100")
@PropertySource("classpath:db.properties")
@Import(JDBCUtil.class)
public class SpringConfiguration {

}

5、编写dao接口以及dao层接口实现类

/*dao层接口示例代码如下*/
public interface UserDao {
    //CRUD
    //添加用户
    void addUser(User user);
}
/*dao层接口实现类示例代码如下*/
/*将此类交给Spring容器管理*/
@Repository("userDao")
public class UserDaoImpl implements UserDao {
    /*属性注入jDBCTemplate对象  将spring中的对象取出*/
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override//添加用户信息
    public void addUser(User user) {
        int update = jdbcTemplate.update("insert into user values(null,?,?,?)", user.getU_name(), user.getU_age(), user.getU_salary());
        if (update>0){
            System.out.println("添加成功");
        }
    }
}

6、使用Junit单元测试,示例代码如下

@RunWith(SpringJUnit4ClassRunner.class)/**在测试类上面添加注解@RunWith(SpringJUnit4ClassRunner.class) 该SpringJUnit4ClassRunne类由它帮我们创建Spring容器*/
@ContextConfiguration(classes = SpringConfiguration.class)/*加载Spring主配置类*/
public class UserTest {
    @Autowired
    private UserDao userDao;
    @Autowired
    private User user;
    @Test//添加用户信息
    public void testAddUser(){
        userDao.addUser(user);
    }
}

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值