Spring整合JdbcTemplate实现增删改查--基于Java配置

33 篇文章 0 订阅
11 篇文章 0 订阅

使用注解的方式来完成IOC和DI

 

1、创建配置类

SpringConfig.java

package com.day02Jdbc.config;
 
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
 
/**
 * @ Author     :ShaoWei Sun.
 * @ Date       :Created in 9:25 2018/11/10
 */
@Configuration//指定该类是一个配置类、等价于一个spring的配置文件
@ComponentScan(basePackages="com.day02Jdbc")//指定扫包范围
@Import(JdbcConfig.class) //引入JdbcConfig.class文件
public class SpringConfig {
 
}

2、创建jdbc配置类

JdbcConfig.java

public class JdbcConfig {
 
 
    /**
     * Bean注解:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。
     * name属性:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。
     * @return
     */
    @Bean(name="dataSource")
    public DataSource createDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        return dataSource;
    }
 
 
    @Bean(name="jdbcTemplate")
    public JdbcTemplate createJdbcTemplate(DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
 
}

3、引入jdbc属性文件

创建Jdbc属性文件 resources/jdbc.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=sswqzx

在jdbcConfig中引入jdbc属性资源文件

 
  1.  
    package com.day02Jdbc.config;
     
    import com.alibaba.druid.pool.DruidDataSource;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.jdbc.core.JdbcTemplate;
    import javax.sql.DataSource;
     
    //import javax.sql.DataSource;
     
     
    /**
     * @ Author     :ShaoWei Sun.
     * @ Date       :Created in 9:28 2018/11/10
     */
    @PropertySource("classpath:jdbc.properties")
    public class JdbcConfig {
     
        @Value("${jdbc.driverClass}")
        private String driver;
     
        @Value("${jdbc.url}")
        private String url;
     
        @Value("${jdbc.username}")
        private String user;
     
        @Value("${jdbc.password}")
        private String password;
     
     
     
        /**
         * Bean注解:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。
         * name属性:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。
         * @return
         */
        @Bean(name="dataSource")
        public DataSource createDataSource(){
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(user);
            dataSource.setPassword(password);
            return dataSource;
        }
     
     
        @Bean(name="jdbcTemplate")
        public JdbcTemplate createJdbcTemplate(DataSource dataSource){
            return new JdbcTemplate(dataSource);
        }
    }

    注意:

    @Bean注解也可以不用指定name,因为基本上都是按照类型注入;如果不指定name,默认是@Bean注解所在的方法的名字。

    在SpringConfig中引入JdbcConfig

    package com.day02Jdbc.config;
     
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
     
    /**
     * @ Author     :ShaoWei Sun.
     * @ Date       :Created in 9:25 2018/11/10
     */
    @Configuration//指定该类是一个配置类、等价于一个spring的配置文件
    @ComponentScan(basePackages="com.day02Jdbc")//指定扫包范围
    @Import(JdbcConfig.class) //引入JdbcConfig.class文件
    public class SpringConfig {
     
    }

    4、在实现类上加上对应的注解

    注意:在使用@Component、@Service、@Repository注解时,可以不指定bean的id,因为基本上都是按照类型注入;如果不指定id,默认是类名首字母小写。

    CustomerServiceImpl.java

    package com.day02Jdbc.service.Impl;
     
    import com.day02Jdbc.dao.CustomerDao;
    import com.day02Jdbc.domain.Customer;
    import com.day02Jdbc.service.CustomerService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Service;
     
    import java.util.List;
     
    /**
     * @ Author     :ShaoWei Sun.
     * @ Date       :Created in 17:06 2018/11/8
     */
    @Service("customerService")
    public class CustomerServiceImpl implements CustomerService {
     
        @Autowired
        private CustomerDao customerDao ;
     
    //    public void setCustomerDao(CustomerDao customerDao){
    //        this.customerDao = customerDao;
    //    }
     
        @Override
        public List<Customer> findAllCustomer() {
            List<Customer> list = customerDao.findAll();
            return list;
     
        }
    }
    //CustomerDaoImpl.java
    
    package com.day02Jdbc.dao.Impl;
     
    import com.day02Jdbc.dao.CustomerDao;
    import com.day02Jdbc.domain.Customer;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Repository;
     
    import java.util.List;
     
    /**
     * @ Author     :ShaoWei Sun.
     * @ Date       :Created in 17:09 2018/11/8
     */
    @Repository("customerDao")
    public class CustomerDaoImpl implements CustomerDao {
     
        @Autowired
        private JdbcTemplate jdbcTemplate;//不需要实例化,通过spring依赖注入进来,采用xml配置,需要提供set方法
     
    //    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    //        this.jdbcTemplate = jdbcTemplate;
    //    }
     
        @Override
        public List<Customer> findAll() {
            List<Customer> list = jdbcTemplate.query("select * from cst_customer",new BeanPropertyRowMapper<Customer>(Customer.class));
            return list;
        }
    }

    5、测试

    package com.day02Jdbc.test;
     
    import com.day02Jdbc.config.SpringConfig;
    import com.day02Jdbc.domain.Customer;
    import com.day02Jdbc.service.CustomerService;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
     
    import java.util.List;
     
    /**
     * @ Author     :ShaoWei Sun.
     * @ Date       :Created in 9:44 2018/11/10
     */
    //@RunWith(SpringJUnit4ClassRunner.class)//指定采用spring的运行器来执行单元测试方法
    //@ContextConfiguration("classpath:applicationContext.xml")//指定spring配置文件的路径
    public class TestFindAnno {
     
        @Test
        public  void test1(){
            ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
            CustomerService customerService = (CustomerService) ac.getBean("customerService");
            List<Customer> list = customerService.findAllCustomer();
            for (Customer customer : list) {
                System.out.println("customer = " + customer);
            }
     
        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值