• 170622、springboot编程之JPA操作数据库


    JPA操作数据库

    什么事JAP?JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

    1、在pom中引用jpa

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    2、配置application.properties文件

    ###datasource 数据源配置
    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.max-active=20
    spring.datasource.max-idle=8
    spring.datasource.min-idle=8
    spring.datasource.initial-size=10
    ###Java Persistence Api
    #指定的数据库
    spring.jpa.database=MYSQL
    #显示每个SQL
    spring.jpa.show-sql=true
    #Hibernate DDL自动(创建,创建-删除,更新)
    spring.jpa.hibernate.ddl-auto=update
    #命名策略
    spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
    #在将其添加到实体管理剥离
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

    3、编写UserRepository.java文件

    package com.rick.apps.repository;
    
    
    import com.rick.apps.entity.User;
    import org.springframework.data.repository.CrudRepository;
    /**
     * Desc :  CrudRepository是springboot提供的封装方法
     * 里面封装了基本的增删改查的方法,方便调用
     * 方法如下:
     *       <S extends T> S save(S var1);
             <S extends T> Iterable<S> save(Iterable<S> var1);
             T findOne(ID var1);
             boolean exists(ID var1);
             Iterable<T> findAll();
             Iterable<T> findAll(Iterable<ID> var1);
             long count();
             void delete(ID var1);
             void delete(T var1);
             void delete(Iterable<? extends T> var1);
             void deleteAll();
     * User : RICK
     * Time : 2017/8/21 15:45
      */
    
    public interface UserRepository extends CrudRepository<User,Integer> {
    
    }

    4、编写UserService.java

    import com.rick.apps.entity.User;
    import com.rick.apps.repository.UserRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    @Service
    public class UserService {
    
        @Autowired
        private UserRepository userRepository;
    
        @Transactional
        public void save(User user){
            userRepository.save(user);
        }
    }

    注:我只写了一个保存方法,其他的调用方法雷同,再次不一一展示

    5、编写HelloController.java

    package com.rick.apps.controller;
    
    import com.rick.apps.entity.User;
    import com.rick.apps.service.UserService;
    import com.rick.common.ResultJson;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    
    @RestController
    public class HelloController {
    
        @Resource
        private UserService userService;
    
        @RequestMapping("/hello")
        public String hello(){
            System.out.println(1/0);
            return "Hello World!";
        }
    
        @GetMapping(value = "/save")
        public ResultJson saveDemo(){
            User user = new User();
            user.setUserName("rick");
            user.setPassWord("123456");
            userService.save(user);
            ResultJson resultJson = ResultJson.buildSuccessInstance();
            return resultJson;
        }
    }

    注:ResultJson是我自己封装的一个返回对象类,方便大家测试,我也把这个类的代码给贴出来

    package com.rick.common;
    
    import java.io.Serializable;
    
    public class ResultJson implements Serializable{
        private static final long serialVersionUID = 1L;
        //返回码
        private String code;
        //返回提示
        private String msg;
        //返回内容
        private Object data;
        
        public ResultJson(){        
        }
        
        public ResultJson(String msg){
            this.code = "1";
            this.msg = msg;
        }
        
        public ResultJson(Object data){
            this.code = "0";
            this.msg = "成功";
            this.data = data;
        }
        
        public ResultJson(String code, String msg){
            this.code = code;
            this.msg = msg;
        }
        
        public ResultJson(String code, String msg, Object data){
            this.code = code;
            this.msg = msg;
            this.data = data;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
        
        public static ResultJson buildSuccessInstance(){
            return new ResultJson("0", "操作成功!", null);
        }
        
        public static ResultJson buildSuccessInstance(String msg){
            return new ResultJson("0", msg, null);
        }
    
        public static ResultJson buildSuccessInstance(Object data){
            return new ResultJson("0", "操作成功!", data);
        }
        
        public static ResultJson buildSuccessInstance(String msg, Object data){
            return new ResultJson("0", msg, data);
        }
        
        public static ResultJson buildFailInstance(){
            return new ResultJson("1", "操作异常!", null);
        }
        
        public static ResultJson buildFailInstance(String msg){
            return new ResultJson("1", msg, null);
        }
        
        /**
         * TODO: 自定义返回异常信息
         * @Auhor: RICK
         * @Date : 2017年6月26日
         * @param code 99 表示没有获取到经纬度信息
         * @param msg
         * @return
         */
        public static ResultJson buildFailInstance(String code,String msg){
            return new ResultJson(code, msg, null);
        }
        
    }

    6、启动项目测试

    数据库添加数据成功:

    项目截图

  • 相关阅读:
    【转】从源码分析Handler的postDelayed为什么可以延时?
    android系统中如何通过程序打开某个AccessibilityService
    【转】在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()
    【转】Android 增,删,改,查 通讯录中的联系人
    【转】Android调用Sqlite数据库时自动生成db-journal文件的原因
    【转】Android辅助功能AccessibilityService自动全选择文字粘贴模拟输入
    【转】Android中保持Service的存活
    Multi-label && Multi-label classification
    第2章 排序 || 第17节 三色排序练习题
    第2章 排序 || 第15节 有序数组合并练习题
  • 原文地址:https://www.cnblogs.com/zrbfree/p/7404848.html
Copyright © 2020-2023  润新知