diff --git a/pom.xml b/pom.xml index 7d5bce9..81cc07a 100644 --- a/pom.xml +++ b/pom.xml @@ -50,18 +50,23 @@ test + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.aliyun.oss aliyun-sdk-oss 3.17.4 - com.aliyun green20220302 3.0.1 - com.alibaba fastjson diff --git a/src/main/java/com/bao/dating/handler/ListToVarcharTypeHandler.java b/src/main/java/com/bao/dating/handler/ListToVarcharTypeHandler.java new file mode 100644 index 0000000..ca30e97 --- /dev/null +++ b/src/main/java/com/bao/dating/handler/ListToVarcharTypeHandler.java @@ -0,0 +1,66 @@ +package com.bao.dating.handler; + +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; +import org.apache.ibatis.type.TypeHandler; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.List; + +/** + * List类型转换成Varchar类型 + * @author KilLze + */ +@MappedJdbcTypes(JdbcType.VARCHAR) +@MappedTypes(List.class) +public class ListToVarcharTypeHandler implements TypeHandler> { + @Override + public void setParameter(PreparedStatement preparedStatement, int i, List strings, JdbcType jdbcType) throws SQLException { + // 遍历List类型的入参,拼装为String类型,使用Statement对象插入数据库 + StringBuffer sb = new StringBuffer(); + for (int j = 0; j < strings.size(); j++) { + if (j == strings.size() - 1) { + sb.append(strings.get(j)); + } else { + sb.append(strings.get(j)).append(","); + } + } + preparedStatement.setString(i, sb.toString()); + } + + @Override + public List getResult(ResultSet resultSet, String s) throws SQLException { + // 获取String类型的结果,使用","分割为List后返回 + String resultString = resultSet.getString(s); + if (StringUtils.isNotEmpty(resultString)) { + return Arrays.asList(resultString.split(",")); + } + return null; + } + + @Override + public List getResult(ResultSet resultSet, int i) throws SQLException { + // 获取String类型的结果,使用","分割为List后返回 + String resultString = resultSet.getString(i); + if (StringUtils.isNotEmpty(resultString)) { + return Arrays.asList(resultString.split(",")); + } + return null; + } + + @Override + public List getResult(CallableStatement callableStatement, int i) throws SQLException { + // 获取String类型的结果,使用","分割为List后返回 + String resultString = callableStatement.getString(i); + if (StringUtils.isNotEmpty(resultString)) { + return Arrays.asList(resultString.split(",")); + } + return null; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9064b7c..6e3ef9f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,7 +5,7 @@ spring: datasource: url: jdbc:mysql://114.55.250.24:3306/dating?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 username: root - password: root + password: rJ6DBTYrFCpjdsxy2sBV driver-class-name: com.mysql.cj.jdbc.Driver # MyBatis 配置 diff --git a/src/main/resources/com/bao/dating/mapper/PostMapper.xml b/src/main/resources/com/bao/dating/mapper/PostMapper.xml index 138c06e..ceb64f9 100644 --- a/src/main/resources/com/bao/dating/mapper/PostMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/PostMapper.xml @@ -1,8 +1,8 @@ - + INSERT INTO post @@ -16,7 +16,10 @@ is_public, like_count, favorite_count, created_at, updated_at) VALUES - (#{userId}, #{content}, #{mediaOssKeys}, #{tags}, #{location}, #{isPublic}, 0, 0, #{created_at}, #{updated_at}) + (#{userId}, #{content}, + #{mediaOssKeys, typeHandler=com.bao.dating.handler.ListToVarcharTypeHandler}, + #{tags, typeHandler=com.bao.dating.handler.ListToVarcharTypeHandler}, + #{location}, #{isPublic}, 0, 0, #{createdAt}, #{updatedAt}) \ No newline at end of file