mybatis 3 -枚举

定义枚举:

public static enum AppStateEnum
    {
        Valid("有效"), Virtual("虚拟"), Hide("隐藏");

        public String toString() {
            return this.appState;
        }

        private String appState;

        private AppStateEnum(String str) {
            this.appState = str;
        }
    }

实体:

public class SysApp {

     public int getAppId() {
        return appId;
    }
    public void setAppId(int appId) {
        this.appId = appId;
    }
    public String getAppName() {
        return appName;
    }
    public void setAppName(String appName) {
        this.appName = appName;
    }
    public String getAppCode() {
        return appCode;
    }
    public void setAppCode(String appCode) {
        this.appCode = appCode;
    }
    public int getSorting() {
        return sorting;
    }
    public void setSorting(int sorting) {
        sorting = sorting;
    }
    public SysAppConstant.AppStateEnum getAppState() {
        return appState;
    }
    public void setAppState(SysAppConstant.AppStateEnum appState) {
        this.appState = appState;
    }
    private int appId;
     private String appName;
     private String appCode;
     private int sorting;
     private SysAppConstant.AppStateEnum appState;

}

XML配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mamaguwen.dao.SysAppDao" >
  <resultMap id="BaseResultMap" type="com.mamaguwen.entity.SysApp" >
    <id column="AppId" property="appId"   jdbcType="BIGINT" />
    <result column="AppName" property="appName" jdbcType="VARCHAR" />
    <result column="AppCode" property="appCode" jdbcType="VARCHAR" />
    <result column="Sorting" property="sorting" jdbcType="VARCHAR" />
    <result column="AppState" property="appState" jdbcType="VARCHAR" />
  </resultMap>

  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
     Select AppId,AppName,AppCode,Sorting,AppState from sys_app
      Where  AppId=#{appId}
  </select>

  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
    delete from sys_app
    where AppId = #{appId}
  </delete>

  <insert id="insert" parameterType="com.mamaguwen.entity.SysApp"   useGeneratedKeys="true"  keyProperty="appId">
      insert into  sys_app (AppName,AppCode,Sorting,AppState)
      values (#{appName},#{appCode},#{sorting},#{appState})
  </insert>

  <update id="updateSorting" parameterType="com.mamaguwen.entity.SysApp" >
    update sys_app
    set appstate=#{appState}
    where appId = #{appId}
  </update>
</mapper>

测试:

@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml",
        "classpath:spring-mybatis.xml" })
public class TestSysAppDao {

    private static final Logger logger = Logger.getLogger(Test_SysUser.class);

    private SysAppDao appDao;

    public SysAppDao getAppDao() {
        return appDao;
    }

     @Autowired
    public void setAppDao(SysAppDao appDao) {
        this.appDao = appDao;
    }

    @Test
    public void insert() {
      SysApp model=new  SysApp();
         model.setAppCode("001");
         model.setAppName("王坤");
         model.setAppState(AppStateEnum.Valid);
         appDao.insert(model);

         System.out.println(String.format("appId:%s", model.getAppId()));
    }

    @Test
    public void selectByPrimaryKey() {
        SysApp model=      appDao.selectByPrimaryKey(1);
        System.out.println("调整状态:"+model.getAppState());
    }
}

需要注意的是 定义枚举时候,定义一个toString方法则 :

比如

AppStateEnum.Valid  存如数据库为 Valid读取出来在页面显示则可以显示成:
  有效


时间: 2024-10-07 07:59:01

mybatis 3 -枚举的相关文章

mybatis自定义枚举转换类

mybatis提供了 EnumTypeHandler和EnumOrdinalTypeHandler完成枚举类型的转换,两者的功能已经基本满足了日常的使用.但是可能有这 样的需求:由于某种原因,我们不想使用枚举的name和ordinal作为数据存储字段.mybatis的自定义转换类出现了. 示例 使用一段代码,将枚举类EnumStatus中的code属性存储到数据库对应字段statusCustom. 自定义转换类 package com.sg.util.typehandler; import ja

mybatis 自定义枚举转换类

最近在搭建maven多模块项目: http://git.oschina.net/alexgaoyh/MutiModule-parent 项目整体代码部分在上文链接的git中,下面的代码段落只是部分个人觉得比较重要的段落 在选择持久化DAO部分的时候,选择了mybatis,实体中变量的定义,想来来使用Enum代替常量的某些好处.所以才有下文的这些功能: package com.alexgaoyh.MutiModule.domain; import java.io.Serializable; imp

mybatis 处理枚举类型

MyBatis支持持久化enum类型属性.假设t_user表中有一列gender(性别)类型为 varchar2(10),存储 MALE 或者 FEMALE 两种值.并且,User对象有一个enum类型的gender 属性,如下所示: public enum Gender { MALE,FEMALE; } 默认情况下MyBatis使用EnumTypeHandler来处理enum类型的Java属性,并且将其存储为enum值的名称.我们不需要为此做任何额外的配置.可以像使用基本数据类型属性一样使用e

springboot mybatis自定义枚举enum转换

原文链接:https://blog.csdn.net/u014527058/article/details/62883573 一.概述 在利用Spring进行Web后台开发时,经常会遇到枚举类型的绑定问题.一般情况下,如果Spring接收到的参数值为字符串类型,Spring会根据枚举的值与传入的字符串进行对应.假设有如下枚举 清单1:枚举定义 public enum Gender { MALE, FEMALE; } 那么,只要客户端在发送请求时,将参数的值设为MALE或FEMALE即可.请求类似

Mybatis JPA

前段时间了解到Spring JPA,感觉挺好用,但其依赖于Hibernate,本人看到Hibernate就头大(不是说Hibernate不好哈,而是进阶太难),于是做了一个迷你版的Mybatis JPA. 一.简介 1.1粗糙点 1.)Entity不支持实体类的嵌套; 2.)目前不支持批量操作,不支持分页查询(这个后续会有的); 3.)仅支持单表,单字段作为where条件(我目前是这样理解的,复杂的SQL还是手工构建比较好,更灵活且便于维护,一般的SQL可以使用Mybatis注解,复杂的SQL最

mybatis源码阅读-高级用法(二)

新建学生表和学生证表 --学生表 CREATE TABLE student( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'id', `name` VARCHAR(20) NOT NULL COMMENT '姓名', `age` INT NOT NULL COMMENT '年龄', sex INT NOT NULL COMMENT '性别 1 男 0 女', cid INT NOT NULL COMMENT '班级id', cardId

MyBatis配置总结

参考:<JavaEE 互联网轻量级框架整合开发>-第 4 章 一.配置概述 <configuration><!--配置--> <properties></properties><!--属性--> <settings></settings><!--设置--> <typeAliases></typeAliases><!--类型命名--> <typeHandler

互联网轻量级框架SSM-查缺补漏第四天

简言:昨天第四章没看完,今天接着记吧. 4.5 typeHandler 类型转换器 顾名思义呀,就是将数据库中数据类型与Java数据类型做相互转换的处理器.在typeHandler中,分为jdbcType和javaType,其中jdbcType用于定义数据库类型,而javaType用于定义Java类型,那么typeHandler的作用是承担二者之间的转换. 它也分称系统定义的,也有自定义的.系统的没事可记的,看看就懂了,自定义typeHandler必须实现接口typerHandler或者继承Ba

MyBatis对于Java对象里的枚举类型处理

平时咱们写程序实体类内或多或少都会有枚举类型属性,方便嘛.但是mybatis里怎么处理他们的增删改查呢? 要求: 插入的时候,会用枚举的定义插入数据库,我们希望在数据库中看到的是数字或者其他东西: 查询的时候,数据库的值可以自动转换为我们对应的枚举值. 举例,我有一个这样的枚举类型: Java Code复制内容到剪贴板 package cn.com.shuyangyang.domain; public enum UserStatus { /** 无效*/ DISABLED(0), /** 有效