spring-boot整合spring-data-jpa

技术文档网 2021-04-25
  1. 依赖
    <!--spring data jpa-->
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!--mysql-->
    <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
    </dependency>
    
  2. 配置数据源 ``` server: port: 8080 #data source spring:
    测试的时候可以不用mysql
    datasource:
    url: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf-8&useSSL=true
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
h2数据库,纯java编写的内存数据库,可做测试用,比较方便

datasource: driver-class-name: org.h2.Driver url: jdbc:h2:~/test username: sa password: h2: # 使用H2 控制台 访问页面http://localhost:8080/h2-console/,默认的数据库为jdbc:h2:mem:testdb console: enabled: true jpa: show-sql: true hibernate: ddl-auto: update #加载hibernate自动更新数据库结构

validate               加载hibernate时,验证创建数据库表结构
create                  每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop        加载hibernate时创建,退出是删除表结构
3. 创建实体类

@Data @Entity @Table(name = "tb_user") public class User implements Serializable{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String name;

private Integer age;

private String address;

} #我这里是把实体类单独抽成了一个名为pojo的maven项目,所以要在pojo项目中引入如下依赖 org.projectlombok lombok true org.hibernate.javax.persistence hibernate-jpa-2.1-api 1.0.2.Final

3. 创建dao

/**

  • @author Mr.Guan
  • @since 2019/11/20
  • 用户dao 使用Spring data jpa 不需要实现类,
  • 继承JpaRepository<User, Integer>即可,User为实体,Integer为id数据类型
  • / public interface UserDao extends JpaRepository<User, Integer> { } ```
  1. 编写serviceImpl(接口就不在此列出了)

    @Service
    public class UserServiceImpl implements UserService {
    
     @Autowired
     private UserDao userDao;
    
     @Override
     public List<User> findAll() {
         return userDao.findAll();
     }
    
     /**
      * 注意:查不到会报错
      * @param id
      * @return
      */
     @Override
     public User findById(Integer id) {
         return userDao.findById(id).get();
     }
    
     /**
      * 注意:对象所有值为空id会自增插进去
      * @param user
      * @return
      */
     @Override
     public User save(User user) {
         return userDao.save(user);
     }
    
     /**
      * 注意:修改也是调用的save方法,必须包含数据库存在的id,否则会插入
      * 即:数据存在则修改,不存在则新增,条件是数据库中是否存在此id
      * @param user
      * @return
      */
     @Override
     public User update(User user) {
         return userDao.save(user);
     }
    
     /**
      * 注意:不存在的数据删除会报错
      * @param id
      */
     @Override
     public void deleteById(Integer id) {
         userDao.deleteById(id);
     }
    }
    
  2. 编写controller测试

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
     @Autowired
     private UserService userService;
    
     @RequestMapping(value = "/findAll", method=RequestMethod.GET)
     public List<User> findAll(){
         return userService.findAll();
     }
    
     @RequestMapping(value = "/findById/{id}", method=RequestMethod.GET)
     public User findById(@PathVariable Integer id){
         return userService.findById(id);
     }
    
     @RequestMapping(value = "/save", method=RequestMethod.POST)
     public User save(User user){
         return userService.save(user);
     }
    
     @RequestMapping(value = "/update", method=RequestMethod.PUT)
     public User update(User user){
         return userService.update(user);
     }
    
     @RequestMapping(value = "/deleteById/{id}", method=RequestMethod.DELETE)
     public String deleteById(@PathVariable Integer id){
         userService.deleteById(id);
         return "删除成功";
     }
    }
    

源码:https://github.com/mrguanxs/boot_cloud.git 中的boot-ssh-provider项目

相关文章

  1. 基于-SLF4J-MDC-机制的日志链路追踪配置属性

    ums: # ================ 基于 SLF4J MDC 机制的日志链路追踪配置属性 ================ mdc: # 是否支持基于 SLF4J MDC

  2. ajax-跨域访问

    ajax 跨域访问 &lt;!DOCTYPE html&gt; &lt;html xmlns:th="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt;

  3. 给第三方登录时用的数据库表-user_connection-与-auth_token-添加-redis-cache

    spring: # 设置缓存为 Redis cache: type: redis # redis redis: host: 192.168.88.88 port

  4. Java动态代理

    Jdk动态代理 通过InvocationHandler和Proxy针对实现了接口的类进行动态代理,即必须有相应的接口 应用 public class TestProxy { public

  5. Java读取classpath中的文件

    public void init() { try { //URL url = Thread.currentThread().getContextClassLo

随机推荐

  1. 基于-SLF4J-MDC-机制的日志链路追踪配置属性

    ums: # ================ 基于 SLF4J MDC 机制的日志链路追踪配置属性 ================ mdc: # 是否支持基于 SLF4J MDC

  2. ajax-跨域访问

    ajax 跨域访问 &lt;!DOCTYPE html&gt; &lt;html xmlns:th="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt;

  3. 给第三方登录时用的数据库表-user_connection-与-auth_token-添加-redis-cache

    spring: # 设置缓存为 Redis cache: type: redis # redis redis: host: 192.168.88.88 port

  4. Java动态代理

    Jdk动态代理 通过InvocationHandler和Proxy针对实现了接口的类进行动态代理,即必须有相应的接口 应用 public class TestProxy { public

  5. Java读取classpath中的文件

    public void init() { try { //URL url = Thread.currentThread().getContextClassLo