精华内容
下载资源
问答
  • MySQL中的字段类型对应于Java对象中的数据类型

    千次阅读 多人点赞 2021-03-03 14:50:53
    还在纠结javaType和jdbcType?MySQL数据类型对应Java什么类型?JdbcType类型Java对象有什么对应关系?数据库类型的Integer是对应int还是对应Integer?本文带你一探究竟!

      我在网上也搜过很多,就是想知道在数据库中的建表语句的字段类型对应Java实体类中属性的类型是什么。

      结果网上一套一套的说法不一,完全不一致,有没有一致点的,不会错的!看我,你就有。

      于是我就无聊到用mybatis-generator插件一一生成对应关系,插件根据数据库建表语句自动生成Java实体类对象。现在开发都是自动生成实体类,我这里也生成后记录一下。

    给出数据库图形界面,方便大家理解我在做什么
    在这里插入图片描述

    sql如下

    CREATE TABLE `testtype` (
      `int_type` int unsigned DEFAULT NULL,
      `int_unsigned` int NOT NULL,
      `bigint_unsigned20` bigint DEFAULT NULL,
      `bigint_unsigned255` bigint DEFAULT NULL,
      `big_int` bigint DEFAULT NULL,
      `big_int_255` bigint DEFAULT NULL,
      `varchar` varchar(255) DEFAULT NULL,
      `bit` bit(20) DEFAULT NULL,
      `bit_64` bit(64) DEFAULT NULL,
      `tiny_int` tinyint DEFAULT NULL,
      `tiny_int_unsigned` tinyint unsigned DEFAULT NULL,
      `small_int` smallint DEFAULT NULL,
      `small_int_unsigned` smallint DEFAULT NULL,
      `binary` binary(255) DEFAULT NULL,
      `blob` blob,
      `char_utf8` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      `char_utf8mb4` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
      `char_utf8gbk` char(255) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,
      `date` date DEFAULT NULL,
      `datetime` datetime DEFAULT NULL,
      `timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      `float_type` float DEFAULT NULL,
      `float_unsigned` float unsigned DEFAULT NULL,
      `decimal` decimal(10,0) DEFAULT NULL,
      `numeric` decimal(10,0) DEFAULT NULL,
      `double_type` double DEFAULT NULL,
      `double_unsigned` double unsigned DEFAULT NULL,
      `integer_type` int DEFAULT NULL,
      `integer_unsigned` int unsigned DEFAULT NULL,
      `text` text,
      `time` time DEFAULT NULL,
      `tinytext` tinytext,
      `year` year DEFAULT NULL,
      `enum_type` enum('1','red') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
      PRIMARY KEY (`int_unsigned`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    

    生成的Java实体类对象如下(篇幅原因,我删掉自动生成的gettersetter):

    public class testType {
        private Integer intUnsigned;
        private Integer intType;
        private Long bigintUnsigned20;
        private Long bigintUnsigned255;
        private Long bigInt;
        private Long bigInt255;
        private String varchar;
        private byte[] bit;
        private byte[] bit64;
        private Byte tinyInt;
        private Byte tinyIntUnsigned;
        private Short smallInt;
        private Short smallIntUnsigned;
        private String charUtf8;
        private String charUtf8mb4;
        private String charUtf8gbk;
        private Date date;
        private Date datetime;
        private Date timestamp;
        private Float floatType;
        private Float floatUnsigned;
        private Long decimal;
        private Long numeric;
        private Double doubleType;
        private Double doubleUnsigned;
        private Integer integerType;
        private Integer integerUnsigned;
        private Date time;
        private String tinytext;
        private Date year;
        private String enumType;
    }
    

    表我给大家列出来了,帅的人已经点赞、关注、收藏一键三连了,谁偷看一下就溜走?

    MySQL数据类型Java实体类属性类型说明
    intInteger不管是signed还是unsigned,Java实体类型都是Integer
    bigintLong不管是bigint(xxx)括号多少位,不管signed还是unsigned,Java实体类型都是Long
    varcharString-
    bitbyte[]-
    tinyintByte不管是signed还是unsigned,Java实体类型都是Byte,在java.lang包下
    smallintShort不管是signed还是unsigned,Java实体类型都是Short
    charString不管char是gbk、utf8、utf8mb4等编码类型,Java实体类型都是String
    dateDatejava.util.Date
    datetimeDatejava.util.Date
    timestampDatejava.util.Date
    timeDatejava.util.Date
    floatFloat不管是signed还是unsigned,Java实体类型都是Float
    decimalLong-
    numericLong-
    doubleDouble不管是signed还是unsigned,Java实体类型都是Double
    tinytextString-
    textString-
    yearDatejava.util.Date
    enumString-

      有些类型插件没有自动转换过来,我就不列举,这里就列举常用的并且插件能转换过来的,这肯定是对的没错。

    后续设计表规范内容:

    1.从8.0.17版本开始,TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT类型的显示宽度将失效。比如bigint(20),如果用navicat直接保存长度20,最终在建表语句被保存为bigint,长度会失效。
    2.自增字段类型必须是整型而且必须是unsigned,推荐int或者bigint,并且自增字段必须是主键或者主键的一部分,我个人写物理主键id一般就是bigint unsigned
    3.手机号使用varchar(20),不要使用整数。
    4.对于精确浮点型数据存储,需要使用decimal,严禁使用floatdouble
    5.如无特殊需要,禁止开发人员使用blob
    6.日期类型字段不能使用varchar或者char,只能使用datedatetime字段类型存放。
    7.所有只需要精确到天的字段全部使用date类型,而不应该使用timestamp或者datetime类型。
    8.所有需要精确到时分秒的字段均使用datetime,不要使用timestamp类型。
    9.不建议使用enumset类型,使用tinyint替代。
    10.仅仅只有单个字符的字段用char(1),比如性别字段。
    11.按照规范,每个列定义的时候必须加上comments,我上面举例子偷懒了所以没写。
    12.数据库的字符集只能选择utf8mb4,如果需要导出,也需要显式选择utf8mb4作为导出格式。


    欢迎一键三连~

    有问题请留言,大家一起探讨学习

    ----------------------Talk is cheap, show me the code-----------------------
    展开全文
  • java 获取对象数据类型

    万次阅读 2017-09-20 13:55:00
    java 获取对象数据类型
      /**
       * 获取数据类型
       * @param object
       * @return
       */
      public static String getType(Object object){
    		String typeName=object.getClass().getName();
    		int length= typeName.lastIndexOf(".");
    		String type =typeName.substring(length+1);
    		return type;
    	}

    展开全文
  • Java redis存Map对象类型数据

    万次阅读 2019-07-08 20:30:07
    对象类型数据 背景描述 项目需要将设备采集到的最新经纬度信息存入redis缓存中,方便及时查询检索。考虑到根据检索条件不同,所查询的设备不同。采取将数据以map类型存入redis缓存,在此记录一下。 实体类 注:一定...

    Java redis存Map<String,RedisCustom>对象类型数据

    背景描述

    项目需要将设备采集到的最新经纬度信息存入redis缓存中,方便及时查询检索。考虑到根据检索条件不同,所查询的设备不同。采取将数据以map类型存入redis缓存,在此记录一下。

    实体类

    注:一定要实现序列化接口

    父类

    public class Redis implements Serializable{
    
        private String name;
        private Integer age;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    
    

    子类

    import java.io.Serializable;
    
    public class RedisCustom extends Redis {
    
        private String stuCode;
    
        public String getStuCode() {
            return stuCode;
        }
        public void setStuCode(String stuCode) {
            this.stuCode = stuCode;
        }
    }
    
    

    方法1°

    redisTemplate.opsForHash()

    示例代码

    @Controller
    @RequestMapping("/redis")
    public class RedisController {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        /**
         * @param
         * @return
         */
        @RequestMapping(value = "/setRedisData", method = RequestMethod.GET)
        @ResponseBody
        public Map<String, Object> setRedisData() {
    
            RedisCustom redis1 = new RedisCustom();
            redis1.setName("小明");
            redis1.setAge(12);
            redis1.setStuCode("36");
            RedisCustom redis2 = new RedisCustom();
            redis2.setName("小红");
            redis2.setAge(11);
            redis2.setStuCode("24");
    
            //构造存入redis中的map
            Map<String, RedisCustom> redisDataMap = new HashMap<String, RedisCustom>();
            redisDataMap.put(redis1.getName(), redis1);
            redisDataMap.put(redis2.getName(), redis2);
    
    		//存入redis
            redisTemplate.opsForHash().putAll("redisTest",redisDataMap);
            //获取缓存内容
            Map<String,RedisCustom> resultMap = redisTemplate.opsForHash().entries("redisTest");
            
            //List<RedisCustom> reslutMapList = redisTemplate.opsForHash().values("redisTest");
            //Set<RedisCustom> resultMapSet = redisTemplate.opsForHash().keys("redisTest");
            //RedisCustom value = (RedisCustom)redisTemplate.opsForHash().get("redisTest","小明");
            
            return ResponseData.success(resultMap);
        }
    }
    

    结果

    在这里插入图片描述

    参考

    https://blog.csdn.net/lichuangcsdn/article/details/80866182

    方法2°

    将对象转成byte[]

    序列化及反序列化工具类

    import java.io.*;
    
    /**
     * 序列化及反序列化工具类
     */
    public class SerializeObjectTool {
        //序列化
        public static byte[] serialize(Object obj) {
            ObjectOutputStream obi = null;
            ByteArrayOutputStream bai = null;
            try {
                bai = new ByteArrayOutputStream();
                obi = new ObjectOutputStream(bai);
                obi.writeObject(obj);
                byte[] byt = bai.toByteArray();
                return byt;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        // 反序列化
        public static Object unserizlize(byte[] byt) {
            ObjectInputStream oii = null;
            ByteArrayInputStream bis = null;
            bis = new ByteArrayInputStream(byt);
            try {
                oii = new ObjectInputStream(bis);
                Object obj = oii.readObject();
                return obj;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    

    示例代码

    @Controller
    @RequestMapping("/redis")
    public class RedisController {
        /**
         * @param
         * @return
         */
        @RequestMapping(value = "/setRedisData", method = RequestMethod.GET)
        @ResponseBody
        public Map<String, Object> setRedisData() {
        
            RedisCustom redis1 = new RedisCustom();
            redis1.setName("小明");
            redis1.setAge(12);
            redis1.setStuCode("36");
            RedisCustom redis2 = new RedisCustom();
            redis2.setName("小红");
            redis2.setAge(11);
            redis2.setStuCode("24");
    
            //构造存入redis中的map
            Map<String, RedisCustom> redisDataMap = new HashMap<String, RedisCustom>();
            redisDataMap.put(redis1.getName(), redis1);
            redisDataMap.put(redis2.getName(), redis2);
    
            //连接redis
            Jedis redis = new Jedis("xx.xx.xxx.xx", 6379);
            redis.auth("xxxxxxxxxxx");
            
            //存
            byte[] personByte = SerializeObjectTool.serialize(redisDataMap);
            redis.set("redisData".getBytes(), personByte);
            //取
            byte[] byt = redis.get("redisData".getBytes());
            Object obj = SerializeObjectTool.unserizlize(byt);
    
            Map<String, RedisCustom> redisData = (Map<String, RedisCustom>) obj;
    
            return ResponseData.success(redisData);
        }
    }
    

    参考

    https://blog.csdn.net/chris_111x/article/details/85236458

    展开全文
  • Java操作Redis存储HashMap对象类型数据

    万次阅读 2018-12-24 17:34:23
    背景描述  关于JAVA去操作Redis时,如何存储一个对象的数据,这是大家非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。...另外关于如果存储一个java对象可以参考...

    背景描述

     关于JAVA去操作Redis时,如何存储一个对象的数据,这是大家非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。存储一个对象是非常常见的。经过网上查找资料以及参考其他网友的代码和实践操作后,整理出Redis如何存储一个Java的HashMap demo代码,如果有错误的地方大家可以留言指出。另外关于如果存储一个java对象可以参考上篇文章【Java操作Redis存储对象类型数据】https://blog.csdn.net/Chris_111X/article/details/85053544

    参考资料

    参考地址:

    https://blog.csdn.net/bang_come/article/details/79098866

    https://www.cnblogs.com/JKayFeng/p/5911544.html

    原理

    先将对象存储到HaspMap中,然后将HashMap对象进行序列化,取出数据时再对HashMap进行反序列化。

     

    Redis版本

    Redis3.0

    https://mvnrepository.com/artifact/redis.clients/jedis

    Bean代码

    package com.obj.bean;

    import java.io.Serializable;

    public class Person implements Serializable {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        public String userName;
        public String password;
        public int age;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        

    }
     

    测试代码

    package com.java.client;

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import com.obj.bean.Person;
    import redis.clients.jedis.Jedis;
    public class RedisHashMapKey {

        public static void main(String[] args) throws IOException, ClassNotFoundException {
            // TODO Auto-generated method stub
            Jedis redis = new Jedis("10.190.130.143", 6379);
            redis.auth("sa123456");
            Person p1 = new Person();
            p1.setUserName("user1");
            p1.setPassword("password1");
            p1.setAge(10);
            Person p2 = new Person();
            p2.setUserName("user2");
            p2.setPassword("password2");
            p2.setAge(12);
            Person p3 = new Person();
            p3.setUserName("user3");
            p3.setPassword("password3");
            p3.setAge(13);
            HashMap<String, Person> map = new HashMap<String, Person>();
            map.put("p1", p1);
            map.put("p2", p2);
            map.put("p3", p3);
            //转成输出字节流
            ByteArrayOutputStream bai = new ByteArrayOutputStream();
            ObjectOutputStream obi = new ObjectOutputStream(bai);
            obi.writeObject(map);
            byte[] byt = bai.toByteArray();
            // 将map存入redis中
            redis.set("p".getBytes(), byt);
            //获取map
            byte[] personByte = redis.get("p".getBytes());
            ObjectInputStream oii = null;
            ByteArrayInputStream bis = null;
            //转换成输入字节流
            bis = new ByteArrayInputStream(personByte);
            oii = new ObjectInputStream(bis);
            Map<String, Person> result = (Map<String, Person>) oii.readObject();
            for (Entry<String, Person> entry : result.entrySet()) {
                System.out.println("key= " + entry.getKey());
                Person obj = (Person) entry.getValue();
                System.out.println("getUserName: " + obj.getUserName());
                System.out.println("getPassword= " + obj.getPassword());
                System.out.println("getAge= " + obj.getAge());

            }

        }
    }


    运行结果

    查看Redis

     

     

    展开全文
  • Java操作Redis存储对象类型数据

    千次阅读 2018-12-24 11:41:15
     关于JAVA去操作Redis时,如何存储一个对象数据,这是大家非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。存储一个对象是非常常见的。经过网上查找资料以及参考其他...
  • 对象实例数据和对象类型数据

    千次阅读 多人点赞 2019-07-30 16:32:29
    对象类型:对象中各个实例字段的数据 对象类型数据:对象的类型、父类、实现的接口、方法等
  • Java 基本数据类型和对象类型

    千次阅读 2011-09-07 22:48:28
    基本数据类型在栈中进行分配,而对象类型在堆中进行分配。  所有方法的参数都是在传递引用而非本身的值(基本类型例外)。  对象之间的赋值只是传递引用,基本类型之间的赋值是创建新的拷贝。  例如: ...
  • Java将Map数据转换为JSON对象数据

    万次阅读 2019-05-26 11:18:12
    公众号与博客名一样:没有腹肌的程序猿 公众号文章类型:工作上所遇到的需求实现方案分享。 此外也会提供一些数据集供大家使用。(这个还在规划中,毕竟打工人时间挺紧的,哈哈哈哈) 到时候也会不定期给大家抽一些...
  • java基本数据类型对象包装类

    千次阅读 2017-10-30 22:37:35
    java基本数据类型对象包装类   一、包装类说明 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。 基本数据类型与...
  • Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注 引用类型:底层结构和基本类型差别较大 JVM的内存空间: (1). Heap 堆空间:分配对象 new Student() (2). Stack 栈空间:临时变量 Student stu (3)...
  • java对象相等问题

    万次阅读 多人点赞 2019-07-31 19:17:15
    所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型对象重新简化为值类型数据。 JDK1.5之后可自动进行装箱和拆箱的操作,例子如下: int i=10; Integer j=Integer.valueOf(i); //手动装箱操作...
  • java中的对象类型与基本数据类型的区别
  • java中基本数据类型对象引用类型的默认初始化值学习 8种基本数据类型的所占存储空间大小,最大值,最小值,及两个高精度类型
  • Java各种数据类型详细介绍及其区别 基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型Java中的简单类型从概念上分为四种:实数、整数、字符、布尔值。但是有一点需要说明的是,Java里面只有八种原始类型,...
  • JAVA 数据类型数据精度

    千次阅读 2015-03-22 12:16:40
    java 数据类型数据精度
  • MySQL Connector/J 对于 MySql 数据类型Java 数据类型之间的转换是很灵活的。一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String,任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型...
  • Java对象: List Map ...Java对象转换为JSON数据的步骤: 1声明Person类的两个对象,person1及person2,并封装成员变量值 2声明list对象,传入person1及perso2 3创建Jackson核心对象 4通过Jack...
  • 深入理解Java类型信息(Class对象)与反射机制

    万次阅读 多人点赞 2017-05-01 23:19:19
    【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ...深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解
  • Java代码转换成json代码 1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "second" ); JSONArray json
  • JAVA 基本数据类型对象包装类

    千次阅读 2013-03-12 21:34:35
    基本数据类型对象包装类 基本数据类型 引用数据类型 byte Byte short Short int Integer long Long float Float double Double char Characher boolean Boolean 基本数据类型对象...
  • java对象数据转换成json数据格式

    万次阅读 2014-12-09 11:00:05
    本次心得体会,使用gson类库,把java对象数据转换成json数据格式
  • JAVA比较(基本数据类型,对象类型)

    千次阅读 2018-01-29 13:14:00
    两个人的年纪谁大,谁小,年纪一般是基本数据类型,整型,如小明今年30岁,小张今年25我们说小张比较年轻,我们是怎么判断的呢,我们是用年纪的差,即小明年龄减去小张年龄,如果大于0,说明小张
  • java基本数据类型&java变量类型

    千次阅读 多人点赞 2015-12-05 11:01:50
    内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java的两大数据类型: 内置数据类型
  • JAVA基本数据类型与引用数据类型

    万次阅读 多人点赞 2016-11-09 09:30:34
    对象类型 在栈中进行分配 在堆中进行分配 基本类型之间的赋值是创建新的拷贝 对象之间的赋值只是传递引用 “==”和“!=”是在比较值 “==”和“!=”是在比较两个引用是否相同
  • 将字符串类型的字符串转换成的Java的对象时,需要先将字符的格式转换成JSON格式的字符串(所以用到了json.jar包),在使用JSON格式的字符串转换成的Java对象类型   字符串原类型(XML格式): 将字符串类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,299,864
精华内容 519,945
关键字:

java对象类型数据

java 订阅