Mybatis插入、查询自定义的数据类型的方式

1、首先创建JavaBean对象

 1 package com.zuo.Mybatis.bean;
 2 
 3 public class PhoneNumber {
 4     private String countryCode;
 5     private String areaCode;
 6     private String number;
 7 
 8     public String getAsString() {
 9         return countryCode+"-"+areaCode+"-"+number;
10     }
11 
12     public String getCountryCode() {
13         return countryCode;
14     }
15     public void setCountryCode(String countryCode) {
16         this.countryCode = countryCode;
17     }
18     public String getAreaCode() {
19         return areaCode;
20     }
21     public void setAreaCode(String areaCode) {
22         this.areaCode = areaCode;
23     }
24     public String getNumber() {
25         return number;
26     }
27     public void setNumber(String number) {
28         this.number = number;
29     }
30     public PhoneNumber(String countryCode, String areaCode, String number) {
31         this.countryCode = countryCode;
32         this.areaCode = areaCode;
33         this.number = number;
34     }
35     public PhoneNumber() {
36 
37         // TODO Auto-generated constructor stub
38     }
39 
40     public PhoneNumber(String phone) {
41         if (phone!=null) {
42             String[] split = phone.split("-");
43             countryCode = split[0];
44             areaCode = split[1];
45             number = split[2];
46             // TODO Auto-generated constructor stub
47         }
48     }
49     @Override
50     public String toString() {
51         return "PhoneNumber [countryCode=" + countryCode + ", areaCode=" + areaCode + ", number=" + number + "]";
52     }
53 }

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

 1 package com.zuo.Mybatis.handler;
 2 
 3 import com.zuo.Mybatis.bean.PhoneNumber;
 4 import org.apache.ibatis.type.BaseTypeHandler;
 5 import org.apache.ibatis.type.JdbcType;
 6 
 7 import java.sql.CallableStatement;
 8 import java.sql.PreparedStatement;
 9 import java.sql.ResultSet;
10 import java.sql.SQLException;
11 
12 public class PhoneTypeHandler extends BaseTypeHandler<PhoneNumber> {
13 
14     //指定在PreparedStatement遇到PhoneNumber 自定义类型的数据时该怎么进处理
15     @Override
16     public void setNonNullParameter(PreparedStatement preparedStatement, int i, PhoneNumber phoneNumber, JdbcType jdbcType) throws SQLException {
17         preparedStatement.setString(i, phoneNumber.getAsString());
18     }
19 
20     //表示在查询到PhoneNumber类型的数据时,怎么对其进行封装,通过列名方式得知
21     @Override
22     public PhoneNumber getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
23 
24         return new PhoneNumber(resultSet.getString(columnName));
25     }
26     //表示在查询到PhoneNumber类型的数据时,怎么对其进行封装,通过列下标的方式得知
27     @Override
28     public PhoneNumber getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
29         return new PhoneNumber(resultSet.getString(columnIndex));
30     }
31     //CallableStatement使用中遇到了PhoneNumber类型的应该如何封装
32     @Override
33     public PhoneNumber getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
34         return new PhoneNumber(callableStatement.getString(i));
35     }
36 }

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

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

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

 

转载于:https://www.cnblogs.com/xianghai/p/10179614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值