本文首发:欢迎各位小伙伴来我的博客站逛逛
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库
<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 + '\'' +
'}';
}
}
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!