キャッシュの使用(A):3を学ぶSpringboot

  1. プロフィール:application.properties、もちろん、またapplication.yml使用することができます。
spring.datasource.url=jdbc:mysql://192.168.155.60:3306/cache
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 启用 MyBatis 的驼峰命名法
mybatis.configuration.map-underscore-to-camel-case=true

# 打印 sql 日志
logging.level.com.fly.springbootcache.mapper=debug
  1. 新規エンティティクラスEmployee.java。宣言とプロパティgettersetterメソッド。
  2. 確立Mapperインタフェース、および注釈@Mapperノート、またはすることができるSpringboot直接起動クラスをマーク@MapperScan("com.xxx")マッパーを走査します。
    そして、使用@EnableCachingキャッシュを開くために注釈を。
// 扫描 mapper 接口
@MapperScan(value = "com.fly.springbootcache.mapper")
@EnableCaching // 开启缓存
@SpringBootApplication
public class SpringBootCacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootCacheApplication.class, args);
    }
}
  1. EmployeeMapper.java、クエリインターフェイスのメソッドを追加します
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.springframework.cache.annotation.Cacheable;

public interface EmployeeMapper {

    @Options(useGeneratedKeys = true) // 使用自增主键
    @Insert("INSERT INTO employee(lastName, email, gender, d_id) 
    values(#{lastName}, #{email}, #{gender}, #{dId})")
    public void insert(Employee employee);

    @Select("SELECT * FROM employee WHERE id = #{id}")
    public Employee getById(Integer id);
}
  1. 追加Serviceクラスを、そして適切なクエリメソッドを追加し、上記の方法およびアノテーションを使用して@Cacheableキャッシュに追加結果を見つけるために、当然のことながら、注釈の上に配置することができますMapper層。
@Service
public class EmployeeService {

    @Autowired
    private EmployeeMapper employeeMapper;

    @Cacheable(cacheNames = "emp") //指定缓存的名字。 默认使用传入的参数作为 key, 即 id。
    public Employee getById(Integer id) {
        return employeeMapper.getById(id);
    }

    public Employee insert(Employee employee) {
        employeeMapper.insert(employee);
        return employee;
    }
}
  1. 定めます controller
@RestController
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @GetMapping("/emp")
    public Employee insert(Employee employee) {
        return employeeService.insert(employee);
    }

    @GetMapping("/emp/{id}")
    public Employee getById(@PathVariable("id") Integer id) {
        return employeeService.getById(id);
    }
}
  1. アプリケーションを起動し、ブラウザでSQLコンソールプリントを表示するためのアクセス・パスを入力し、最初のクエリは、SQLをプリントアウトするだろう、2番目のクエリは、2番目のキャッシュ代わりにデータベースクエリの直接クエリ、SQLを印刷されません。
リリース8元の記事 ウォンの賞賛3 ビュー844

おすすめ

転載: blog.csdn.net/weixin_40203134/article/details/85058531