通过spring initializr创建maven工程springboot-mysql-redis,并且勾选相关依赖(web、数据库驱动、mybatis)
springboot-mysql-redis工程,做了上面的勾选,对应的pom.xml依赖如下↓
1.8 org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-devtoolsruntime true org.mybatis.spring.boot mybatis-spring-boot-starter2.0.1 mysql mysql-connector-javaruntime org.springframework.boot spring-boot-starter-testtest org.springframework.boot spring-boot-maven-plugin
准备Bean对象类对应数据库信息:
MyBatis的Dao:Dao接口、Dao接口对应的映射文件(xml)
编写UserMapper接口并添加@Mapper注解(标记该类是一个Mapper接口,可以被SpringBoot自动扫描)
#上面这个可以不做:在启动类上添加@MapperScan(basePackages = {"com.qf.dao"})Dao接口的包扫描批量 *** 作也行
在配置文件中增加Mapper.xml文件扫描的地址:特别要注意的是配置里面的不是config-location(核心配置文件),而是mapper-locations
(3)编写service接口以及实现类
(4) 编写controller
(5)配置application.properties
#连接数据库 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root #mybatis别名 mybatis.type-aliases-package=com.sen.domain #加载映射文件 mybatis.mapper-locations=classpath:mapper @Override public List集成Spring Data JPA(jpa,java持久化访问findAll() { String key = "UserList"; //先看缓存中是否有数据 List users = (List ) redisTemplate.boundValueOps(key).get(); //如果有,直接取缓存数据 if(users!=null){ return users; } //如果没有,则查询数据 users = userMapper.findAll(); //再将数据存入到缓存 redisTemplate.boundValueOps(key).set(users); return users; } }
什么是SpringData? Spring Data是一个用于简化数据访问,并支持云服务的开源框架,其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务,Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和 *** 作,除了CRUD外,还包括如分页,排序等一些常用的功能 Spring Data的官网:Redirecting…
SpringData提供了对数据库的 *** 作对象,使我们对数据库的 *** 作变得更加的简单和方便,而且在 *** 作数据库的时候,无需编写SQL语句
集成步骤
1.创建工程 2.引入依赖 3.创建Pojo 4.配置Pojo注解-[*] 5.编写Dao,Dao需要继承JpaRepository-[*] 6.编写Service,并调用Dao实现增删改查 7.编写Controller,调用Service实现增删改查 8.测试
导入依赖:
org.springframework.boot spring-boot-starter-data-jpa
(2)编写pojo
在工程的src目录下创建com.sen.bean.User对象,会自动创建表
@Entity @Table(name = "user") @Data @NoArgsConstructor @AllArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; @Column(name = "username") private String username; //@Column:指定表的列名,如果表字段跟实体类成员变量名字相同可以不写这个注解! private String password; private String address; //getters/setters }
注解说明↓
@Entity:表明为一个实体对象 @Table:指定映射的表 @Id:指定为主键 @GeneratedValue:指定主键的生成策略 TABLE:使用一个特定的数据库表格来保存主键。 SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。 IDENTITY:主键由数据库自动生成(主要是自动增长型) AUTO:主键由程序控制 @Column:指定表的列名,如果表字段跟实体类成员变量名字相同可以不写这个注解!
(3)编写dao接口
在工程src目录下创建dao接口,需要继承JpaRepository对象(该对象完成对数据库的CRUD过程,并且支持分页查询、排序等功能)。
在src下创建com.sen.dao.UserDao接口,代码如下:
package com.sen.dao; import com.qf.bean.User; import org.springframework.data.jpa.repository.JpaRepository; public interface UserDao extends JpaRepository{//<要操作的实体类,和主键id的类型> }
(4)编写service接口以及实现类
1、编写service接口:
package com.sen.service; import com.sen.bean.User; import java.util.List; public interface UserService { ListfindUsers(); User findUserById(Integer id); void saveUser(User user); void updateUser(User user); void deleteUserById(Integer id); }
2、编写service实现类:注意查询一个用userDao.findById(id).get();↓
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public ListfindUsers() { return userDao.findAll(); } //注意查询一个用userDao.findById(id).get();↑ @Override public User findUserById(Integer id) { Optional optional = userDao.findById(id); return optional.get(); } @Override public void saveUser(User user) { userDao.save(user); } @Override public void updateUser(User user) {//?没有给id只给username就是增加跟上面一样! //并没有update方法如果id存在,则执行更新 *** 作,没有id就是增加方法! userDao.save(user); } @Override public void deleteUserById(Integer id) { userDao.deleteById(id); } }
(5)编写controller
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/findUsers") public List配置applicationfindUsers(){ return userService.findUsers(); } @RequestMapping("/findUserById/{id}") public User findUserById(@PathVariable Integer id){ return userService.findUserById(id); } @RequestMapping("/saveUser") public void saveUser(User user){//? userService.saveUser(user); } @RequestMapping("/updateUser") public void updateUser(User user){//?没有给id只给username就是增加跟上面一样! userService.updateUser(user); } @RequestMapping("/deleteUserById/{id}") public void deleteUserById(@PathVariable Integer id){ userService.deleteUserById(id); } }
在application.properties中配置相关JPA内容↓
#数据源,连接数据库 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://192.168.1.129:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root #jpa可选相关配置↓ spring.jpa.database=mysql spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.generate-ddl=true #hibernate.ddl-auto,建表策略: #update:每次运行程序,没有表会新建表,表内有数据不会清空,只会更新(为了效果明显,可以先删除原来的user表) #create:每次运行程序,没有表会新建表,表内有数据会清空 #create-drop:每次程序结束的时候会清空表 #validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错
注:
集成SpringDataJPA
Dao需要继承JpaRepository
JpaRepository
中已经实现了增删改查,可以拿着直接使用 继承过来的save方法,没有id就是增加,有id才是更新!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)