1、首先创建JavaBean对象

 package com.zuo.Mybatis.bean;

 public class PhoneNumber {
private String countryCode;
private String areaCode;
private String number; public String getAsString() {
return countryCode+"-"+areaCode+"-"+number;
} public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
public String getAreaCode() {
return areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public PhoneNumber(String countryCode, String areaCode, String number) {
this.countryCode = countryCode;
this.areaCode = areaCode;
this.number = number;
}
public PhoneNumber() { // TODO Auto-generated constructor stub
} public PhoneNumber(String phone) {
if (phone!=null) {
String[] split = phone.split("-");
countryCode = split[0];
areaCode = split[1];
number = split[2];
// TODO Auto-generated constructor stub
}
}
@Override
public String toString() {
return "PhoneNumber [countryCode=" + countryCode + ", areaCode=" + areaCode + ", number=" + number + "]";
}
}

2、创建PhoneNumberHandler类,继承BasicTypeHandler,重写其中的方法。

 package com.zuo.Mybatis.handler;

 import com.zuo.Mybatis.bean.PhoneNumber;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType; import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class PhoneTypeHandler extends BaseTypeHandler<PhoneNumber> { //指定在PreparedStatement遇到PhoneNumber 自定义类型的数据时该怎么进处理
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, PhoneNumber phoneNumber, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i, phoneNumber.getAsString());
} //表示在查询到PhoneNumber类型的数据时,怎么对其进行封装,通过列名方式得知
@Override
public PhoneNumber getNullableResult(ResultSet resultSet, String columnName) throws SQLException { return new PhoneNumber(resultSet.getString(columnName));
}
//表示在查询到PhoneNumber类型的数据时,怎么对其进行封装,通过列下标的方式得知
@Override
public PhoneNumber getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
return new PhoneNumber(resultSet.getString(columnIndex));
}
//CallableStatement使用中遇到了PhoneNumber类型的应该如何封装
@Override
public PhoneNumber getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
return new PhoneNumber(callableStatement.getString(i));
}
}

3、在mybatis-config.xml中添加代码

<typeHandlers>
<!--指定在遇到PhoneNumber类型的数据时,调用该Handler处理器处理-->
<typeHandler handler="com.zuo.Mybatis.handler.PhoneTypeHandler"/>
</typeHandlers>

4、剩下的就是完成mapp.xml和mapper接口的部分。很简单,就不必说明了。

Mybatis插入、查询自定义的数据类型的方式的更多相关文章

  1. MyBatis 模糊查询的 4 种实现方式

    引言 MyBatis 有 4 种方式可以实现模糊查询. 员工信息表 ( tb_employee ) 如下: id name sex email birthday address 001 张一凡 男 z ...

  2. mybatis 模糊查询 like的三种方式

    第一种 public void selectBykeyWord(String keyword) { String id = "%" + keyword + "%" ...

  3. MyBatis模糊查询的三种拼接方式

    1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} ...

  4. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

  5. MyBatis基础入门《四》接口方式.Select查询集合

    MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...

  6. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  7. Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!

    之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...

  8. PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)

    原文: PHP5: mysqli 插入, 查询, 更新和删除  Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...

  9. MyBatis 关联查询的实现:一对一

    有2个实体:用户.会员卡,一个用户只能办理一张会员卡,即一对一. user_tb : 需要在一方引入另一方的主键作为外键. card_tb: 使用扩展类 (1)在pojo包下新建User类: pack ...

随机推荐

  1. Linux下iptables防火墙用法规则详解

    管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受×××.很多用户把 Linux 中的iptables当成一个防火墙,从严格 ...

  2. mysql索引的应用场景以及如何使用

    唯一的是什么? 1. 索引列(字段)的所有值都只能出现一次,即必须唯一 ---------------------------------------------------------------- ...

  3. 使用 webpack 搭建 React 项目

    简评:相信很多开发者在入门 react 的时候都是使用 create-react-app 或 react-slingshot 这些脚手架来快速创建应用,当有特殊需求,需要修改 eject 出来的 we ...

  4. linux用到的命令

    命令行下利用别名打开ss以及设置相关代理(写到~/.bashrc中使永久有效) #open proxy alias proxystart='gsettings set org.gnome.system ...

  5. springBoot 实现中文国际化

    一:实现效果如下: 二 SpringBoot 国际化配置 1.创建国际化配置文件(3个): messages.properties messages.user.name=用户名 messages.us ...

  6. [Alpha]Scrum Meeting#3

    github 本次会议项目由PM召开,时间为4月3日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写团队贡献分配计划(issue#39) 调整&分配工作 SiM ...

  7. Jmeter将JDBC Request查询结果作为下一个接口参数方法(转载)

    现在有一个需求,从数据库tieba_info表查出rank小于某个值的username和count(*),然后把所有查出来的username和count(*)作为参数值,用于下一个接口. tieba_ ...

  8. JAVA数据结构--二叉查找树

    二叉查找树定义 二叉查找树(英语:Binary Search Tree),也称二叉搜索树.有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tr ...

  9. FreeRTOS-03中断测试

    根据正点原子FreeRTOS视频整理 单片机:STM32F207VC FreeRTOS源码版本:v10.0.1 portDISABLE_INTERRUPTS(); /*关中断*/portENABLE_ ...

  10. C++ 流控制函数setw()、setfill()、setbase()、setprecision()的使用

    头文件: #include <iostream> #include <iomanip> 功能: std::setw :需要填充多少个字符,默认填充的字符为' '空格 std:: ...