一、持久层支持
(1)JPA
-
JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库。
真正干活的可能是Hibernate,TopLink等等实现了JPA规范的不同厂商,默认是Hibernate。 -
application.properties需添加:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hcl?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
- pom.xml需添加对mysql和jpa的支持
- Category、CategoryDAO、CategoryController、listCategory.jsp四者建立联系
(2)Mybatis-注解方式
- pom.xml需要添加对mybatis和mysql的支持,创建接口CategoryMapper,“@Mapper”声明表示这是一个mybatis mapper接口,使用@Select注解表示调用findAll方法会去执行对应的sql语句,其他跟JPA差不多;
(3)Mybatis-xml方式
- 在注解方式的基础上,删去@Select注解,在xml文件中声明那条sql语句,另外,在application.properties文件中添加一下语句,指明去哪里寻找xml文件,并指定别名:
mybatis.mapper-locations=classpath:com/hcl/springboot/mapper/*.xml
mybatis.type-aliases-package=com.hcl.springboot.pojo
二、CRUD+分页
(1)JPA方式
值得注意:JPA 新增和修改用的都是save. 它根据实体类的id是否为0来判断是进行增加还是修改;JPA自带一些sql语句函数;页数从0开始;
@RequestMapping("/listCategory")
public String listCategory(Model m,@RequestParam(value = "start", defaultValue = "0") int start,@RequestParam(value = "size", defaultValue = "5") int size) throws Exception {
start = start<0?0:start;
Sort sort = new Sort(Sort.Direction.DESC, "id");
Pageable pageable = new PageRequest(start, size, sort);
Page<Category> page =categoryDAO.findAll(pageable);
m.addAttribute("page", page);
return "listCategory";
}
- 在参数里接受当前是第几页 start ,以及每页显示多少条数据 size。 默认值分别是0和5;
- 如果 start 为负,那么修改为0. 这个事情会发生在当前是首页,并点击了上一页的时候;
- 设置倒排序;
- 根据start,size和sort创建分页对象;
- CategoryDAO根据这个分页对象获取结果page;
- 把page放在"page"属性里,跳转到listCategory.jsp。
(2)Mybatis方式
- 增加对PageHelper的支持;
- PageHelperConfig:注解@Configuration 表示PageHelperConfig 这个类是用来做配置的,注解@Bean 表示启动PageHelper这个拦截器;
- 修改CategoryMapper,增加CRUD方法的支持;
- 为CategoryController添加: 查询、增加、删除、获取、修改映射;
- 通过page.getList遍历当前页面的Category对象;
在分页的时候通过page.pageNum获取当前页面,page.pages获取总页面数。
(3)SQLite
-
SQLite 是一种数据库,它是跑在 JVM里面的,所以不需要像 mysql 那样得独立安装配置,而是直接拿来就用,本知识点就会把对mysql 的依赖,建立在 sqlite 上,这样大家跑起来就不用费神地安装配置 mysql 数据了啦
-
因为是使用 JPA 来链接 SQlite, 而 JPA 默认用的是 Hibernate,所以要为 Hibernate 配置专门的方言。为了更好地和四川人打交道,最好说四川方言。
方言就是这么个意思,方便 Hibernate和 Sqlite打交道。 方言的英文是 Dialect, 所以就有了SQLiteDialect 这个类了。
除此之外,还需要其他两个类配合。至于他们是怎么工作的。。。就不用关心啦,反正能用就行啦。 三个类:SQLiteDialect、SQLiteDialectIdentityColumnSupport、SQLiteMetadataBuilderInitializer -
对application.properties进行配置,对 mysql 的配置,修改到了对 sqlite 的配置,增加 sqlite jar 包。
菜鸟一个,做做笔记,便于温故知新,若有理解有误或者表达不当之处,欢迎指正~
如果觉得本文有所帮助,希望点赞支持~