Spring+jdbcTemplate简单的CRUD

本文首发:欢迎各位小伙伴来我的博客站逛逛

Spring中有很多概念性的内容,需要我们去花些时间去搞懂,这里只列出Spring的大纲,网上有很多写的很详细的文章,不再赘述
IOC :推荐这篇文章_谈谈对Spring IOC 的理解
AOP : 推荐这篇文章_Spring AOP详解
具体的搞懂下面这些东西,就会对SpringIOC和AOP有一些初步的了解了
- 1.如何创建SpringIOC容器对象
- 2.获取bean对象的两种方式
- 3.通过属性注入的方式配置bean
- 4.如何应用其它bean
- 5.通过引入外部属性文件来配置数据源
- 6.Spring中四个组件注解以及实现自动注入的注解
- 7.AOP术语,切入点表达式的表示方式,五种通知
- 8.声明切入点表达式,设置切面的优先级
- 9.Spring中声明事务,事务的属性


下面就用jdbcTemplate来实现一个简单的增删改查的功能

1。在工程下新建一个Module

  • 选择自动创建配置文件,所需要的library一会咱们自己创建

  • 填上Module的名称

  • 在Module下创建一个lib文件夹用来存放所需要的jar包

  • 将jar包选中右键add as library创建一个library库

接下来就是代码部分了

  • 首先需要引入dbproperties数据库的配置文件
  • 配置spring-config.xml配置文件

<context:component-scan base-package="top.idalin">context:component-scan>


<context:property-placeholder location="db.properties">context:property-placeholder>

 
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
     <property name="user" value="${jdbc.username}">property>
     <property name="password" value="${jdbc.password}">property>
     <property name="jdbcUrl" value="${jdbc.jdbcUrl}">property>
     <property name="driverClass" value="${jdbc.driverClass}">property>
 bean>

 
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
     
     <property name="dataSource" ref="dataSource">property>
 bean>
  • 实体类
public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private double salary;
    private Integer deptId;

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", lastName='" + lastName + '\'' +
                ", email='" + email + '\'' +
                ", salary=" + salary +
                ", deptId=" + deptId +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public String getLastName() {
        return lastName;
    }

    public String getEmail() {
        return email;
    }

    public double getSalary() {
        return salary;
    }

    public Integer getDeptId() {
        return deptId;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }
}
public class Department {
    private Integer id;
    private String name;

    public void setId(Integer id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }


    public Integer getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Department{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

}
  • 业务逻辑层EmployeeService
public interface EmployeeService {

    public List getEmployees();

    public Employee getEmployee(int id);

    void addEmployee(Employee employee);

    void deleteEmployee(int id);

    void updateEmployee(Employee employee);
}
  • 业务逻辑层的实现
@Service("employeeService")
public class EmployeeServiceImpl implements EmployeeService {
    @Autowired
    private EmployeeDao employeeDao;

    @Override
    public List getEmployees() {
        return employeeDao.getEmployees();
    }

    @Override
    public Employee getEmployee(int id) {
        return employeeDao.getEmployee(id);
    }

    @Override
    public void addEmployee(Employee employee) {
        employeeDao.addEmployee(employee);
    }

    @Override
    public void deleteEmployee(int id) {
        employeeDao.deleteEmployee(id);
    }

    @Override
    public void updateEmployee(Employee employee) {
        employeeDao.updateEmployee(employee);
    }
}
  • 数据访问层
public interface EmployeeDao {

    // 查询所有的员工信息的方法
    public List getEmployees();

    public Employee getEmployee(int id);

    void addEmployee(Employee employee);

    void deleteEmployee(int id);

    void updateEmployee(Employee employee);
}
  • 数据访问层的实现(操作数据库)
@Repository("emplooyeeDao")
public class EmployeeDaoImpl implements EmployeeDao{

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public List getEmployees() {
        String sql = "select * from employees";
        RowMapper rowMapper = new BeanPropertyRowMapper<>(Employee.class);

        List employees = jdbcTemplate.query(sql, rowMapper);
        return employees;
    }

    @Override
    public Employee getEmployee(int id) {
        String sql = "select * from employees where id = ?";
        RowMapper rowMapper = new BeanPropertyRowMapper<>(Employee.class);
        Employee employee = jdbcTemplate.queryForObject(sql,rowMapper,id);
        return employee;
    }

    @Override
    public void addEmployee(Employee employee) {
        // 创建SQL语句
        String sql = "insert into employees(last_name,email,salary,dept_id) values(?,?,?,?)";
        jdbcTemplate.update(sql,employee.getLastName(),employee.getEmail(),employee.getSalary(),employee.getDeptId());
    }

    @Override
    public void deleteEmployee(int id) {
        String sql = "delete from employees where id = ?";
        jdbcTemplate.update(sql,id);
    }

    @Override
    public void updateEmployee(Employee employee) {
        String sql = "update employees set last_name = ?,dept_id = ? where id = ?";
        jdbcTemplate.update(sql,employee.getLastName(),employee.getDeptId(),employee.getId());
    }
}
  • 测试类
    • 分别测试查询所有员工、单个员工信息,增加员工信息,删除员工信息及修改员工信息的方法
/**
 * spring与JdbcTemplate实现对数据库的增删改查
 */
public class Spring_TemplateTest {

    // 创建一个IOC容器
    ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-config.xml");


    // 测试查询所有员工的方法
    @Test
    public void testQueryAll() {
        EmployeeService employeeService = (EmployeeService) ioc.getBean("employeeService");
        List employees = employeeService.getEmployees();
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }
    // 测试查询单个员工的方法
    @Test
    public void testQueryEmployee() {
        EmployeeService employeeService = (EmployeeService) ioc.getBean("employeeService");
        Employee employee = employeeService.getEmployee(2);
        System.out.println(employee);
    }
    // 测试增加一个员工的方法
    @Test
    public void testAddEmployee() {
        EmployeeService employeeService = (EmployeeService) ioc.getBean("employeeService");
        Employee employee = new Employee();
        employee.setLastName("zhaoliu");
        employee.setEmail("[email protected]");
        employee.setSalary(888.00);
        employee.setDeptId(2);
        employeeService.addEmployee(employee);
    }
    // 测试删除一个员工的方法
    @Test
    public void testDeleteEmployee() {
        EmployeeService employeeService = (EmployeeService) ioc.getBean("employeeService");
        employeeService.deleteEmployee(8);
    }
    // 测试修改员工信息的方法
    @Test
    public void testUpdateEmployee() {
        EmployeeService employeeService = (EmployeeService) ioc.getBean("employeeService");
        Employee employee = new Employee();
        employee.setId(1);
        employee.setLastName("admin");
        employee.setDeptId(1);
        employeeService.updateEmployee(employee);
    }
}

需要注意的点: 1. jar包版本的问题!! 2.sql语句不要写错!!

项目中的源码,欢迎fork,感谢star!

你可能感兴趣的:(后端,jdbcTemplate,Spring)