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 '到这个字段上.即可以设置长度,类型,是否为空,说明文字,默认值这些情况

  • 相关阅读:
    dns
    sqlserver中int 类型的字段,值为null的时候引发一个问题
    后台读取数据库中值,返回的值出乎意料,并引发了StackOverflowException
    软件设计原则的一些学习总结
    Python基础(5):模块
    SQL 知识纲要
    Linux编程学习笔记Devices
    Python基础(3):函数
    Python基础(2):控制结构
    Python基础(4):类
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/9078921.html
Copyright © 2011-2022 走看看