springboot + mybatis 枚举类型处理器
时间:2019-01-22
本文章向大家介绍springboot + mybatis 枚举类型处理器,主要包括springboot + mybatis 枚举类型处理器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
springboot + mybatis 枚举类型处理器
1.数据库
2.枚举类
public enum Gender {
MALE(1,"男"),
FEMALE(2,"女"),
UNKNOW(3,"未知");
private Integer dbValue;
private String value;
Gender(Integer dbValue, String value){
this.dbValue = dbValue;
this.value = value;
}
public static Gender dbValueOf(Integer dbValue){
for (Gender gender : Gender.values()){
if(gender.getDbValue().equals(dbValue)){
return gender;
}
}
return null;
}
}
get set ......
3.entity
public class User implements Serializable {
private Integer id;
private String name;
private Gender gender;
get set......
}
4.mapper接口
@Repository
public interface UserMapper {
List<User> findAll();
void insertUser2(List<User> userList);
}
5.mapper.xml
注意 column为gender的result 指定 typeHandler,typeHandler在第6部分
<?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.demo.mapper.UserMapper">
<resultMap
id="userMap"
type="user">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="gender" property="gender" typeHandler="com.demo.typehandler.EnumTypeHandler"/>
</resultMap>
<insert id="insertUser2" parameterType="List" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
insert into mk_user (name,gender) values
<foreach
collection="list" index="index" item="user" separator=",">
(#{user.name},#{user.gender,typeHandler = com.demo.typehandler.EnumTypeHandler})
</foreach>
</insert>
<select id="findAll" resultMap="userMap" >
select * from mk_user;
</select>
</mapper>
6.实现typehandler的类
public class EnumTypeHandler implements TypeHandler<Gender> {
//请求时转换
@Override
public void setParameter(PreparedStatement ps, int i, Gender parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i,String.valueOf(parameter.getValue()));
}
//返回时转换
@Override
public Gender getResult(ResultSet rs, String columnName) throws SQLException {
String value = rs.getString(columnName);
return Gender.dbValueOf(Integer.parseInt(value));
}
@Override
public Gender getResult(ResultSet rs, int columnIndex) throws SQLException {
System.out.print("getResult2");
return null;
}
@Override
public Gender getResult(CallableStatement cs, int columnIndex) throws SQLException {
System.out.print("getResult3");
return null;
}
}
7.properties 文件
mybatis.type-handlers-package=com.demo.typehandler
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PySpark——开启大数据分析师之路
- 一款直击痛点的优秀http框架,让我超高效率完成了和第三方接口的对接
- 强连通和连通算法在关联图谱中的应用
- PySpark SQL——SQL和pd.DataFrame的结合体
- 初识Kubernetes及快速安装
- 使用k8s部署springboot+redis简单应用
- React Ref 使用总结
- Python人脸识别—我的眼里只有你
- 函数式编程是如何提升代码的扩展性
- 浏览器中的跨域问题与 CORS
- 微信小程序怎么做链接可以链到小程序的其它页面。
- 如何实现一个 3D 效果的魔方
- FlutterDojo设计之道—状态管理之路(三)
- 微信头像加国旗
- FlutterDojo设计之道—状态管理之路(四)