今天看啥  ›  专栏  ›  zheng_zq

Redis学习笔记(十) 案例:省份列表(上)

zheng_zq  · 简书  ·  · 2020-02-14 04:27

需求

  1. 提供index.html页面,页面中有一个省份 下拉列表
  2. 当 页面加载完成后 发送 ajax请求 ,加载所有省份

分析

  1. 使用redis缓存一些 不经常发生变化 的数据。
  2. 数据库的数据一旦 发生改变 ,则需要 更新缓存
  3. 数据库的表执行 增删改 的相关操作,需要将redis缓存数据情况, 再次存入
  4. 在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类和新建一系列包

代码实现

  1. 新建 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 + '\'' +
                '}';
    }
}
  1. 在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();
}
  1. 在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();
}
  1. 在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;
    }
}

同样该实现类 还没有写完 ,先暂停一下

  1. 继续 完善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;
    }
}
  1. 继续 完善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();
    }
}



原文地址:访问原文地址
快照地址: 访问文章快照