Mybatis插入、查询自定义的数据类型的方式
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插入、查询自定义的数据类型的方式的更多相关文章
- MyBatis 模糊查询的 4 种实现方式
引言 MyBatis 有 4 种方式可以实现模糊查询. 员工信息表 ( tb_employee ) 如下: id name sex email birthday address 001 张一凡 男 z ...
- mybatis 模糊查询 like的三种方式
第一种 public void selectBykeyWord(String keyword) { String id = "%" + keyword + "%" ...
- MyBatis模糊查询的三种拼接方式
1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- MyBatis基础入门《四》接口方式.Select查询集合
MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...
- Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了
insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...
- Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!
之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...
- PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
原文: PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...
- MyBatis 关联查询的实现:一对一
有2个实体:用户.会员卡,一个用户只能办理一张会员卡,即一对一. user_tb : 需要在一方引入另一方的主键作为外键. card_tb: 使用扩展类 (1)在pojo包下新建User类: pack ...
随机推荐
- software installing
<1>.Apache防火墙配置 firewall-cmd --add-service=http firewall-cmd --add-service=https 防火墙通过80和443端口 ...
- npm淘宝镜像和默认镜像切换
1.得到原本的镜像地址 npm get registry > https://registry.npmjs.org/ 设成淘宝的 npm config set registry http://r ...
- Spark 错误日志中看到的一些问题
2014-4-23 18:42:09 org.jivesoftware.spark.util.log.Log error 严重: Unable to contact shared group info ...
- FPGA基础学习(7) -- 内部结构之CLB
目录 1. 总览 2. 可配置逻辑单元 2.1 6输入查找表(LUT6) 2.2 选择器(MUX) 2.3 进位链(Carry Chain) 2.4 触发器(Flip-Flop) 参考文献: 一直以来 ...
- editplus5注册码
注册码:Vovan 3AG46-JJ48E-CEACC-8E6EW-ECUAW
- JavaWeb学习笔记(十七)—— 数据库连接池
一.数据库连接池概述 1.1 为什么使用数据库连接池 如果用户每次请求都向数据库获得连接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建1 ...
- grep练习
1.查找特定字符串 [root@server3 mnt]# cat passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/no ...
- python定义的一个简单的shell函数的代码
把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...
- android 捕获未try的异常
1.Thread.UncaughtExceptionHandler java里有很多异常如:空指针异常,越界异常,数值转换异常,除0异常,数据库异常等等.如果自己没有try / catch 那么线程就 ...
- post调试postman
载地址:https://www.getpostman.com/ 教程地址:http://www.cnblogs.com/s380774061/p/4624326.html