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

2018-12-27 07:41:56来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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接口的部分。很简单,就不必说明了。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java开发笔记(四十一)日历工具Calendar

下一篇:个人所得税计算java版