mybatis [参数类型的转换]

it2023-12-29  68

第一步创建一个需要转换的参数的Bean类Address(String province,String city,String stree)

第二步创建一个用来接收的javaBean类(int id,String name,Address a )

第三步创建一个AddressTypeHandler

implements TypeHandler extends BaseTypeHandler

package test; 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 AddressTypeHandler extends BaseTypeHandler<Address> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Address address, JdbcType jdbcType) throws SQLException { String adres = address.getProvince()+"," +address.getCity()+","+address.getStreet(); ps.setString(i, adres); } private Address getAdresFromString(String adres) { if(adres==null||"".equals(adres)) { return null; } String[] info = adres.split(","); Address adObj = new Address(info[0],info[1],info[2]); return adObj; } @Override public Address getNullableResult(ResultSet resultSet, String s) throws SQLException { return getAdresFromString(resultSet.getString(s)); } @Override public Address getNullableResult(ResultSet resultSet, int i) throws SQLException { return getAdresFromString(resultSet.getString(i)); } @Override public Address getNullableResult(CallableStatement callableStatement, int i) throws SQLException { return getAdresFromString(callableStatement.getString(i)); } }

第四步在xml里配置

  分为局部配置和全局配置

     局部配置

   这个是在配置具体的sql语句的xml里进行的

<insert id="saveTeacher"> insert into addr(id,place)values(#{id},#{place,jdbcType=VARCHAR, typeHandler=test.AddressTypeHandler}) </insert>

全局配置

这个是在

configuration和environments之间配置的

test为xxxTypeHandler对应的包名

<typeHandlers> <package name="test"/> </typeHandlers>

 

最新回复(0)