zoukankan      html  css  js  c++  java
  • IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA环境搭建,JPA实现非字符型设置长度

    1、在github上已有配置环境,如下链接,(需要环境JDK1.8及以上版本,Tomcat1.8及以上版本,搭建maven库,使用编译器IntellJ IDEA)

         https://github.com/liushaoye/rent-shop/tree/master

    2、进行修改application.properties

     1 ##############################服务器端口############################################
     2 server.port=6000
     3 #####################################################################################数据库连接设置################################################
     4 spring.datasource.dbcp2.driver-class-name=com.mysql.jdbc.Driver
     5 spring.datasource.username=root
     6 spring.datasource.url=jdbc:mysql://localhost:3306/renttest?useUnicode=true&characterEncoding=UTF-8
     7 spring.datasource.password=123456
     8 ###########################################################################数据库内部设置############################################################
     9 spring.jpa.hibernate.ddl-auto=update
    10 spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
    11 ####可以查看sq语句###
    12 spring.jpa.show-sql=true
    13 ######################去除数据库表格生成的下划线############################
    14 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 
    View Code

    3、搭建对应表格的实体类

    表格样式

             

      对应实体类

     1 package com.easylab.rentshop.pojo;
     2 
     3 
     4 import com.easylab.base.SuperEntity;
     5 import org.hibernate.annotations.*;
     6 
     7 import javax.persistence.*;
     8 import javax.persistence.Entity;
     9 import javax.persistence.Table;
    10 
    11 /**
    12  * Created by
    13  *
    14  * @author: liuya
    15  * @Date: 2018/5/23 9:44
    16  * @Description: rent-shop
    17  *
    18  * 主类型实体类
    19  *
    20  *
    21  */
    22 
    23 @Entity
    24 @Table(name = "bommain")
    25 public class BomMain extends SuperEntity {
    26 
    27     @Id
    28     @GenericGenerator(strategy = "uuid", name = "mainId")
    29     @GeneratedValue(generator = "mainId")
    30     @Column(length = 40)
    31     public String mainId;
    32 
    33     @Column(nullable = false, length = 50)
    34     public String mainName;
    35 
    36     /**
    37      * 所有字段的是否存在
    38      */
    39     @Column(nullable = false, columnDefinition="int(1) default 1 COMMENT '当前是否删除'")
    40     public Integer deleted;
    41 
    42     public BomMain() {
    43     }
    44 
    45     public String getMainId() {
    46         return mainId;
    47     }
    48 
    49     public void setMainId(String mainId) {
    50         this.mainId = mainId;
    51     }
    52 
    53     public String getMainName() {
    54         return mainName;
    55     }
    56 
    57     public void setMainName(String mainName) {
    58         this.mainName = mainName;
    59     }
    60 
    61     public Integer getDeleted() {
    62         return deleted;
    63     }
    64 
    65     public void setDeleted(Integer deleted) {
    66         this.deleted = deleted;
    67     }
    68 }
    View Code

    @Entity  

    标记在类名上面,作为实体类的标识

    @Table 

    当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,

    由于java中采用驼峰命名,而数据库中表的名字不是,所以这里使用了@Table注解

    注解有属性  @Table(name=“”)使用注解名称后接括号的形式,使用内部属性,name用于指明数据库的表名,没用到的暂时不叙述

    @Id
    设置对象表示符,标识的实体类的属性映射对应表中的主键,mainId是表格的主键,所以采用此注解
    @GeneratedValue
    设置标识符的生成策略,常与@Id一起使用,参数:strategy指定具体的生成策略
    @GenericGenerator注解是hibernate所提供的自定义主键生成策略生成器,由@GenericGenerator实现多定义的策略。所以,它要配合@GeneratedValue一起使用,并且@GeneratedValue注解中的”generator”属性要与@GenericGenerator注解中name属性一致,strategy属性表示hibernate的主键生成策略
    这里想要实现字符型的主键,可以自动生成uuid,所以采用,如上配置,在@GenericGenerator配置属性是strategy = "uuid",同时,给@GeneratedValue应用,应用的名字就是name=generator="mainId"
    @Column
    描述数据库表中该字段的定义,具有一下属性
    name:表示数据库表中该字段的名称,默认情形属性名称一致。
    nullable:表示该字段是否允许为null,默认为true。
    unique:表示该字段是否是唯一标识,默认为false。
    length:表示该字段的大小,仅对String类型的字段有效。
    insertable:表示在ORM框架执行插入操作时,该字段是否应出现INSETRT语句中,默认为true。
    updateable:表示在ORM框架执行更新操作时,该字段是否应该出现在UPDATE语句中,默认为true。对于一经创建就不可以更改的字段,该属性非常有用,如对于birthday字段。
    columnDefinition:表示该字段在数据库中的实际类型。通常ORM框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是DATE,TIME还是TIMESTAMP。此外,String的默认映射类型为VARCHAR,如果要将String类型映射到特定数据库的BLOB或TEXT字段类型,该属性非常有用。
    这里主要设置了字段的长度,所以选用了@Column(length=40),注意这个length只能是字符型才能生效,非字符,比如long和int,使用这个属性是无效的(关于其他类型的如下讲解,想了很久奥)
    @Column(nullable = false, columnDefinition="int(1) default 1 COMMENT '当前是否删除'")
     

    这里就是靠这个columnDefinition属性来设置非字符型字段的类型长度,因为这个注解可以实现拼接sql语句的作用,就是在当前这个字段下,可以添加其之后的sql语句,所以增强了字段的复合和自定义功能,

    一般建立表格的语句就是下边这样

    columnDefinition的作用就是(比如subId) varchar(40) NOT NULL COMMENT '子类型ID',它就是可以拼接一个varchar(40) NOT NULL COMMENT '到这个字段上.即可以设置长度,类型,是否为空,说明文字,默认值这些情况

  • 相关阅读:
    oracle的安装与plsql的环境配置
    Working with MSDTC
    soapui-java.lang.Exception Failed to load url
    Oracle 一个owner访问另一个owner的table,不加owner
    Call API relation to TLS 1.2
    Call API HTTP header Authorization: Basic
    VS2008 .csproj cannot be opened.The project type is not supported by this installat
    The changes couldn't be completed.Please reboot your computer and try again.
    Create DB Table View Procedure
    DB Change
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/9078921.html
Copyright © 2011-2022 走看看