需求
- 提供index.html页面,页面中有一个省份 下拉列表
- 当 页面加载完成后 发送ajax请求,加载所有省份
分析
- 使用redis缓存一些不经常发生变化的数据。
- 数据库的数据一旦发生改变,则需要更新缓存。
- 数据库的表执行增删改的相关操作,需要将redis缓存数据情况,再次存入
- 在service对应的增删改方法中,将redis数据删除。
环境搭建
- 搭建数据库:
CREATE DATABASE day23; -- 创建数据库
USE day23; -- 使用数据库
CREATE TABLE province( -- 创建表
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL
);
-- 插入数据
INSERT INTO province VALUES(NULL,'北京');
INSERT INTO province VALUES(NULL,'上海');
INSERT INTO province VALUES(NULL,'广州');
INSERT INTO province VALUES(NULL,'陕西');
-
导入JAR包:
-
导入JS包、util类和新建一系列包:
代码实现
- 新建Province的实体类
package com.zzq.domain;
/**
* Province的实体类
*/
public class Province {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Province{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
- 在Dao包下面的impl包里写一个Province的接口类
package com.zzq.dao.impl;
import com.zzq.domain.Province;
import java.util.List;
/**
* Province的接口类
*/
public interface ProvinceDao {
public List<Province> findAll();
}
- 在Dao包下写一个Province的实现类
package com.zzq.dao;
import com.zzq.dao.impl.ProvinceDao;
import com.zzq.domain.Province;
import java.util.List;
/**
* Province的实现类
*/
public class ProvinceDaoImpl implements ProvinceDao {
@Override
public List<Province> findAll() {
return null;
}
}
这个实现类还没有写完,先暂停一下
4 在service包下面的impl包里写一个ProvinceService的接口类
package com.zzq.service.impl;
import com.zzq.domain.Province;
import java.util.List;
/**
* ProvinceService的接口类
*/
public interface ProvinceService {
public List<Province> findAll();
}
- 在service包下写一个ProvinceService的实现类
package com.zzq.service;
import com.zzq.domain.Province;
import com.zzq.service.impl.ProvinceService;
import java.util.List;
/**
* ProvinceService的实现类
*/
public class ProvinceServiceImpl implements ProvinceService {
@Override
public List<Province> findAll() {
return null;
}
}
同样该实现类还没有写完,先暂停一下
6. 继续完善Province的实现类
package com.zzq.dao;
import com.zzq.dao.impl.ProvinceDao;
import com.zzq.domain.Province;
import com.zzq.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* Province的实现类
*/
public class ProvinceDaoImpl implements ProvinceDao {
//1.声明一个成员变量 jdbctemplate
private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public List<Province> findAll() {
//1.定义sql
String sql = "select * from province";
//2.执行sql
List<Province> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Province>(Province.class));
return list;
}
}
- 继续完善ProvinceService的实现类
package com.zzq.service;
import com.zzq.dao.ProvinceDaoImpl;
import com.zzq.dao.impl.ProvinceDao;
import com.zzq.domain.Province;
import com.zzq.service.impl.ProvinceService;
import java.util.List;
/**
* ProvinceService的实现类
*/
public class ProvinceServiceImpl implements ProvinceService {
//声明Dao
private ProvinceDao provinceDao = new ProvinceDaoImpl();
@Override
public List<Province> findAll() {
return provinceDao.findAll();
}
}