天天看點

spring5.0純注解方式完成curd 、以及spring整合Junit

聲明使用 spring5.0.7 版本,JDK8

使用純注解的方式 完成 crud ,首先以查詢所有的使用者資訊為例,進行純注解測試:

子工程的目錄結構如下:

spring5.0純注解方式完成curd 、以及spring整合Junit

1、準備工作:建立目錄結構,配置pom.xml;導入依賴以及jdbc.properties 、log4j.properties ;

2、完成資料庫 table 建立,資料準備;

3、建立 SpringConfig 和 JdbcConfig 配置類;完成 domain、dao、service、以及實作類;

4、建立測試類,完成spring整合Junit ;

5、測試;

資料庫表如下:

spring5.0純注解方式完成curd 、以及spring整合Junit

實體類;

package com.baidu.domain;
/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 8:19
 */
public class Customer {
    private Long cust_id;
    private String cust_name;
    private String cust_source;
    private String cust_industry;
    private String cust_level;
    private String cust_address;
    private String cust_phone;
    //  get set    tostring
    ......
    }
           

JdbcConfig配置類:

package com.baidu.config;
import javax.sql.DataSource;
/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 9:38
 *   @PropertySource   引入jdbc.properties
 *   @Configuration  聲明這是一個配置類
 */
@PropertySource("classpath:jdbc.properties")
@Configuration
public class JdbcConfig {
   // @value 注入字段,字段指派
    @Value("${jdbc.driverClass}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
        //   @Bean 隻能作用在method上,name指定id
    @Bean(name = "dataSource")
    public DataSource createDataSource(){
        DruidDataSource source = new DruidDataSource();
        source.setDriverClassName(driver);
        source.setUrl(url);
        source.setUsername(username);
        source.setPassword(password);
        return source;
    }
    @Bean
    public JdbcTemplate getJdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}
           

CustomerConfig配置類:

package com.baidu.config;
/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 9:35
 */
 // @ComponentScan 掃包
 //@Import  把JdbcConfig 配置類導入 SpringConfig 主配置類;
@Configuration
@ComponentScan(basePackages = "com.baidu")
@Import(JdbcConfig.class)
public class SpringConfig {

}
           

dao層,以及daoImpl實作類:

// dao層接口
public interface CustomerDao {
    List<Customer> findAll();
}
 // daoImpl實作類
/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 8:27
 * 注解 @Repository("customerDao") 作用于持久層,指定id為customerDao
 */
@Repository("customerDao")
public class CustomerDaoImpl implements CustomerDao {
	//@Autowired 屬性注入,提供setter方法
    @Autowired
    private JdbcTemplate jdbcTemplate;
    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.class));
        return list;
    }
}
           

service層,以及 serviceImpl實作類:

/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 8:24
 */
public interface CustomerService {
    List<Customer> findAllCustomer();
}
//  serviceImpl實作類 如下
/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 8:26
 * 注解  @Service  作用于業務邏輯層
 */
@Service("customerService")
public class CustomerServiceImpl implements CustomerService {
    @Autowired
    private CustomerDao customerDao;
    //注入dao,提供setter 方法
    public void setCustomerDao(CustomerDao customerDao) {
        this.customerDao = customerDao;
    }
    //調用dao層的方法
    @Override
    public List<Customer> findAllCustomer() {
        List<Customer> all = customerDao.findAll();
        return all;
    }
}
           

單元測試:

/**
 * @auther SyntacticSugar
 * @data 2018/11/7 0007下午 9:49
 *      使用全注解  完成查詢所有customer
 */
 //@RunWith 以單元測試運作
// @ContextConfiguration 把配置類加載

@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = SpringConfig.class)
public class CustomerTest01 {
    //要測試的目标,直接注入進來
    @Autowired
    private  CustomerService customerService;
    @Test
    public  void test(){
        List<Customer> allCustomer = customerService.findAllCustomer();
        System.out.println(allCustomer);
    }
}
           

運作如下:

spring5.0純注解方式完成curd 、以及spring整合Junit

繼續閱讀