一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是枚举,在DB存储时我们想存的枚举的代号,从DB拿出来时想直接映射成目标枚举类型,也即代号字段与Java枚举类的相互类型转换. 当然,你可以为每个枚举写一个MyEnumTypeHandler,但问题是要为每个类都写一个TypeHandler,过于繁琐. 有了泛型,一个通用的TypeHandler直接搞定. 二.源码 源码详见:spring-mybatis-test 2.1 EnumTypeHandler类 packag…
usesClasses,TypInfo ; typeTCommandType = (ctEmptyCommand,ctAdd,ctModify); TCommandTypeConvert=classpublic    class function CommandToString(ACommand: TCommandType): string;    class function StringToCommand(const AStrCommand: string): TCommandType;en…
平时咱们写程序实体类内或多或少都会有枚举类型属性,方便嘛.但是mybatis里怎么处理他们的增删改查呢? 要求: 插入的时候,会用枚举的定义插入数据库,我们希望在数据库中看到的是数字或者其他东西: 查询的时候,数据库的值可以自动转换为我们对应的枚举值. 举例,我有一个这样的枚举类型: Java Code复制内容到剪贴板 ), ); private int status; UserStatus(int status){ this.status = status; } public int getS…
通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlServer2008就不支持枚举类型的列,用的时候也是将枚举类型转换成int 类型,数据库存储的是int 类型的数据,在访问数据的时候进行枚举类型和int类型的转换,例如下面的例子: public enum RoleNames { User, Manager, Admin } 假设有一个实体类Users,如果实体类不支持枚举类型,得这样使用(下面的示…
今天在写代码的时候,心血来潮对原来的字符串保存状态位的方式很不满意,对于代码里出现了 state == "1" 这样的状态判断很是不爽.那么理想中的判断是怎样的呢?很简单如你所想枚举类型. public enum FormSate { View, Modify } State == FormSate.View; 和"1"这样的硬代码比较起来,上面的代码看起来可读性很强. .NET 枚举的应用分析 接下来,自然而然的会出现在ORM操作中,对于一个数据Model,我们需…
1.枚举 在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”. 在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,是枚举的一个例子: public enum ColorEnum { RED, GREEN, YELLOW, BLUE; } 2.在spring中配置注入一个枚举类型对象 1).定义枚举类型对象 package com.z…
参考: http://www.cnblogs.com/an-wl/archive/2011/04/14/2015815.html 惯例先上MSDN: https://msdn.microsoft.com/zh-cn/library/cc138362(v=vs.110).aspx 枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法.例如,假设您必须定义一个变量,该变量的值表示一周中的一天.该变量只能存储七个有意义的值.若要定义这些值,可以使用枚举类型.枚举类型是使用en…
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-import.html#1.2.values方法的使用: Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由arthinking发表于4年前 | Java基础 | 暂无评论 |  被围观 8,332 views+ 1.枚举(Enum):1.1.枚举类型中的两个静态方法:1.2.values方法的使用:…
枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我们想要维护一组 常量集合时,我们是这样做的,看下面的例子: class FavouriteColor_class{ public static final int RED = 1; public static final int BLACK = 3; public static final int…
基础知识: 在 Java 中, 代表时间和日期的类型包含: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型相应 在标准 SQL 中, DATE 类型表示日期, TIME 类型表示时间,…
以下情况下必须显式指定 Hibernate 映射类型 一个 Java 类型可能对应多个 Hibernate 映射类型. 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hibernate 映射类型可以是 date, time 或 timestamp. 此时必须根据对应的数据表的字段的 SQL 类型, 来确定 Hibernate 映射类型. 如果字段为 DATE 类型, 那么 Hibernate 映射类型为 date; 如果字段为 TIME 类型, 那么 Hiberna…
在底层使用mybatis的时候,我们可能会需要把表里的字段映射到Java里面的枚举类,现总结下工作中的用法: sku表里一个status_type字段为int类型.(这里是postgresql的脚本) status_type int4 NULL Java里面对应生成的枚举类为: public enum SkuStatusType implements DbEnum, LocalString { PRODUCT(0, false, "masterdata.skuStatus.product&quo…
1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射  java.sql.Types定义了常用数据库(MySQL.Oracle.DB2等)所用到的数据类型,官名也叫JDBC类型.每个数据库产品的数据类型定义各不相同,但都有JDBC类型与之对应,如MySQL的BIGINT-->JDBC的BIGINT. 而每个JDBC类型,都有默认的Java类型与之对应,即ResultSet.getObjec…
上一篇介绍了mybatis字段映射枚举类型,这一篇给大家介绍一下hibernate字段怎么去映射枚举类型的(这只是一种参考方式,映射方法还有很多种). 还是以上篇sku表为例,sku表里一个status_type字段为int类型.(这里是postgresql的脚本) status_type int4 NULL Java里面对应生成的枚举类为: public enum SkuStatusType implements DbEnum, LocalString { PRODUCT(0, false,…
一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符串字段与Java类的相互类型转换. 当然,你可以为每个类写一个MyClassTypeHandler,但问题是要为每个类都写一个TypeHandler,过于繁琐. 有了泛型,一个通用的TypeHandler直接搞定. 二.源码 详见:spring-mybatis-test package com.ad…
修改mybatis plus Generator模板生成字段注释枚举常量 本文基于最新的mybatis-plus 3.0.1版本源码修改,如果使用其它版本,处理方式也类似,主要是生成Entity的FreekMarker模板文件的修改. 源码下载:https://gitee.com/baomidou/mybatis-plus 目标: 表的字段定义如下: `name_type` int(1) DEFAULT NULL COMMENT '名字类型{Girl:0,女孩:boy:1,男孩:other:2,…
知识点:在使用Mybatis的框架中,使用自定义的类型处理器处理枚举enum类型 应用:利用枚举类,处理字段有限,可以用状态码,代替的字段,本实例,给员工状态字段设置了一个枚举类 状态码,直接赋值给对象,存入数据库 从数据中,查询状态码,利用自定义的类型处理器,得到对应的枚举类=>进而得到到的枚举类,状态对应的含义(如emp.getEmpsStatus().getMsg(),代码中有详细含义) (1)实体类和枚举类 Employee.java: public class Employee {  …
一.首先定义接口,提供获取数据库存取的值得方法,如下: public interface BaseEnum { int getCode(); } 二.定义mybatis的typeHandler扩展类,如下: package com.camelot.assetcenter.sdk.orm.mybatis; import com.camelot.assetcenter.sdk.common.BaseEnum; import com.camelot.openplatform.common.log.Lo…
最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3)涉及到类型转化的用法: 4)批量修改.批量查询.批量新增的用法. Mybatis官网给了具体的文档,但是并没有对以上用法具体介绍,因此在这里整理下,以便以后工作用到时,可以参考. 本章主要使用Mybatis中使用typeHandlers进行对Enum进行转化的用法(本章将结合Spring自动注入<S…
在一个项目中使用LINQ和EF时出现了题目所示的异常,搜索了很多资料都找不到解决办法,主要是因为EF方面的知识欠缺. 先将情况记录如下,以供以后参考. 查询主要设计两张表,由外键关联: 在进行下面的查询时,出现异常:无法将类型“System.Nullable`1”强制转换为类型“System.Object”.LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型. public ActionResult GetIpSegments() { //List<Ipsegment>…
IBaseEnum.java public interface IBaseEnum { public String getName(); } FuncEnum.java import com.ssslinppp.enumConvert.IBaseEnum; public enum FuncEnum implements IBaseEnum { AVG("avg", "func-avg"), MAX("max", "func-max&qu…
1. 定义枚举值的接口 public abstract interface ValuedEnum { int getValue(); } 所有要被mybatis处理的枚举类继承该接口 2. 定义枚举类型,并实现ValuedEnum接口 public enum Gender implements ValuedEnum { UNKNOWN("保密", 0), MAIL("男", 1), FAMAIL("女", 2); private String n…
数据库字段gender为枚举类型,从前台接受到实体后进行保存报错:org.postgresql.util.PSQLException: ERROR: column "gender" is of type gender but expression is of type character varying ========================== 本篇文章从解决这个报错入手,附带 1.@TypeDef/@Enumerated/@Type的使用!!!!! ===========…
MyBatis支持持久化enum类型属性.假设t_user表中有一列gender(性别)类型为 varchar2(10),存储 MALE 或者 FEMALE 两种值.并且,User对象有一个enum类型的gender 属性,如下所示: public enum Gender { MALE,FEMALE; } 默认情况下MyBatis使用EnumTypeHandler来处理enum类型的Java属性,并且将其存储为enum值的名称.我们不需要为此做任何额外的配置.可以像使用基本数据类型属性一样使用e…
请当枚举类型上面加上[Flags]特性就可以了.…
在我们写代码的实际业务中,有时候实体类用的是String,数据库中自然是VARCHAR类型,但是如果这个实体的属性值放的是数字类型,你查询的时候又需要对它进行排序.sql怎么写呢. 别担心mysql提供了转换方法:CAST  ,CONVERT 例如:我把VARCHAR类型的价格 转换成DECIMAL 然后再进行排序       1.select  price from TABLE  order by CAST (price as DECIMAL) desc 2.select  price fro…
刚刚在看<<深入浅出MySQL>>一书的"ENUM类型"一节, 以下面的代码举例, 得出结论: "还可以看出对于不在ENUM指定范围内的值时, 并没有返回警告, 而是插入了enum('M', 'F')的第一个值'M'" 但是当我插入另外一种值'S'时, 却提示我"Data truncated for enumColumn at row 1" 我想问这个结论是否正确? 还是因为MySQL的版本问题呢 mysql> cr…
原文:C# 获取与解析枚举类型的 DescriptionAttribute System.ComponentModel.DescriptionAttribute 这个 Attribute,经常被用来为属性或事件提供说明,这个说明是可以被本地化的.在一些用户界面中,就可以利用这个 Attribute 提供一些额外的信息,就像 Visual Studio 中所做的,如图 1 所示: 图 1 可以看到,对 AutoSizeMode 的说明,被显示在了下面的框中. 但是,界面中的枚举项就没这么好的待遇了…
mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名,java类属性类型-数据库字段类型 前面两个都容易设置,但是第三点要求经常会出现java类型和数据库的存储类型不一样, 例如java类型是String,数据库中存储的是char.varchar.text 对于一般常见的类型对应,mybatis已经内部包含了类型转换器,使String类型的java属性…
枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueType又从system.Object派生,所以枚举类型是指类型. 编译枚举类型时,C#编译器会把每个符号转换成类型的一个常量字段.C#编译器将枚举类型视为基元类型. 1.获取枚举列表: /// <summary> /// 获取枚举列表 /// </summary> /// <par…