Caso Spring-IOC (implementación de anotaciones)

1.1 Directorio de proyectos

1.2 Ejemplo de código

Clase de entidad de cliente

package cn.guardwhy.domain;
/**
 * 客户实体类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Customer {
    
    
    // 成员变量
    private Long custId;
    private String custName;
    private String custSource;
    private String custIndustry;
    private String custLevel;
    private String custAddress;
    private String custPhone;
}

Mapeo del conjunto de resultados

package cn.guardwhy.resources;

import cn.guardwhy.domain.Customer;
import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;


public class CustomerRowMapper implements RowMapper<Customer> {
    
    
    /**
     * 结果集映射的方法:
     *      结果集中的每一行记录,都会调用一次该方法
     */
    public Customer mapRow(ResultSet rs, int index) throws SQLException{
    
    
        // 创建客户对象
        Customer customer = new Customer();
        customer.setCustId(rs.getLong("cust_id"));
        customer.setCustName(rs.getString("cust_name"));
        customer.setCustSource(rs.getString("cust_source"));
        customer.setCustIndustry(rs.getString("cust_industry"));
        customer.setCustLevel(rs.getString("cust_level"));
        customer.setCustAddress(rs.getString("cust_address"));
        customer.setCustPhone(rs.getString("cust_phone"));
        return customer;
    }
}

Dao de la capa de persistencia

CustomerDao

package cn.guardwhy.dao;

import cn.guardwhy.domain.Customer;

import java.util.List;

public interface CustomerDao {
    
    
    /**
     * 查询全部客户
     */
    List<Customer> findAllCustomers();
}

CustomerDaoImpl

package cn.guardwhy.dao.impl;

import cn.guardwhy.dao.CustomerDao;
import cn.guardwhy.domain.Customer;
import cn.guardwhy.resources.CustomerRowMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;
/**
 * 客户dao实现类
 */
@Repository("customerDao")
public class CustomerDaoImpl implements CustomerDao {
    
    
    // 定义JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;


    /**
     * 查询全部客户列表
     */
    @Override
    public List<Customer> findAllCustomers() {
    
    
        // 定义sql
        String sql = "select t.cust_id, t.cust_name, t.cust_source, "+
                "t.cust_industry, t.cust_level, t.cust_address, t.cust_phone "+
                "from cst_customer t";

        // 执行查询操作
        List<Customer> list = jdbcTemplate.query(sql, new CustomerRowMapper());
        return list;
    }
}

Servicio de capa empresarial

Servicio al Cliente

package cn.guardwhy.service;

import cn.guardwhy.domain.Customer;

import java.util.List;
/**
 * 客户service接口
 */
public interface CustomerService {
    
    
    /**
     * 查询全部客户列表
     */
    List<Customer> findAllCustomers();
}

CustomerServiceImpl

package cn.guardwhy.service.impl;

import cn.guardwhy.dao.CustomerDao;
import cn.guardwhy.domain.Customer;
import cn.guardwhy.service.CustomerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
/**
 * 客户service实现类
 */
@Service("customerService")
public class CustomerServiceImpl implements CustomerService {
    
    
    // 定义客户dao
    @Autowired
    private CustomerDao customerDao;

    /**
     * 查询全部客户的列表
     */
    @Override
    public List<Customer> findAllCustomers() {
    
    
        return customerDao.findAllCustomers();
    }
}

Clase de configuración de anotación

SpringConfiguration

package cn.guardwhy.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

/**
 * @Configuration:这个也会交给Spring容器托管,注册到容器中。因为他本来就是一个@Component
 * 它代表一个配置类,就和我们之前看到的beans.xml
 */
@Configuration
@ComponentScan(value = {
    
    "cn.guardwhy"}) // @ComponentScan:配置扫描包。相当于xml配置中<context:component-scan/>标签
public class SpringConfiguration {
    
    
    /**
     *  @Bean: 注册一个bean,就相当于xml的一个bean标签。
     *  这个方法的名字,相当于bean标签中的id属性。
     *  这个方法的返回值,就相当于bean标签中的class属性。
     */
    @Bean(value = "jdbcTemplate")
    public JdbcTemplate  createJdbcTemplate(DataSource dataSource){
    
    
        // 创建JbdcTemplate对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;   // 就是返回要注入到bean的对象中
    }

    /**
     * 配置数据源对象DateSource
     */
    @Bean(value = "dataSource")
    public DataSource createDataSource(){
    
    
        // 创建DataSource
        DruidDataSource dataSource = new DruidDataSource();
        // 注入属性
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

        dataSource.setInitialSize(6);
        dataSource.setMinIdle(3);
        dataSource.setMaxActive(50);
        dataSource.setMaxWait(60000);
        dataSource.setTimeBetweenEvictionRunsMillis(60000);
        return dataSource;
    }
}

Capa de presentación (controlador)

CustomerController

package cn.guardwhy.controller;

import cn.guardwhy.config.SpringConfiguration;
import cn.guardwhy.domain.Customer;
import cn.guardwhy.service.CustomerService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

/**
 * 客户表现层
 */
public class CustomerController {
    
    
    public static void main(String[] args) {
    
    
        // 1.如果完全使用了配置类方式去做,只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象加载。
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        // 2.获取客户service对象
        CustomerService customerService = (CustomerService) context.getBean("customerService");
        // 3.查询全部客户列表数据
        List<Customer> list = customerService.findAllCustomers();
        // 4.遍历操作
        for(Customer customer : list){
    
    
            System.out.println(customer);
        }
    }
}

1.3 Resultados de la ejecución

Supongo que te gusta

Origin blog.csdn.net/hxy1625309592/article/details/115009592
Recomendado
Clasificación