- プロフィール: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
- 新規エンティティクラスEmployee.java。宣言とプロパティ
getter
とsetter
メソッド。
- 確立
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);
}
}
- で
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);
}
- 追加
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;
}
}
- 定めます
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);
}
}
- アプリケーションを起動し、ブラウザでSQLコンソールプリントを表示するためのアクセス・パスを入力し、最初のクエリは、SQLをプリントアウトするだろう、2番目のクエリは、2番目のキャッシュ代わりにデータベースクエリの直接クエリ、SQLを印刷されません。