SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
1.数据库 校验名称唯一性,用于新增和修改功能2.java实现“数据平滑升级”3.mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入4.MySql5.6版本开启慢SQL功能-本次采用永久生效方式5.开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql
6.SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
7.Mybatis使用注解方式实现批量更新、批量新增8.mysql 5.7.x版本查看某张表、库的大小 思路方案说明9.定时任务频繁插入数据导致锁表问题 -> 查询mysql进程10.postgresql和mysql中的limit使用方法@
摘要
mybatis用于bean和mysql字段映射,针对字段类型为JSONObject和JSONArray方式使用
ArrayTypeHandler:
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.alibaba.fastjson.JSONArray;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
/**
* @Author: Mickey
* @Date: 2019/7/1 10:22
* @Version 1.0
*/
@MappedTypes(JSONArray.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class ArrayTypeHandler extends BaseTypeHandler<JSONArray> {
/**
* 设置非空参数
*
* @param ps
* @param i
* @param parameter
* @param jdbcType
* @throws SQLException
*/
@Override
public void setNonNullParameter(PreparedStatement ps, int i, JSONArray parameter, JdbcType jdbcType)
throws SQLException {
ps.setString(i, String.valueOf(parameter.toJSONString()));
}
/**
* 根据列名,获取可以为空的结果
*
* @param rs
* @param columnName
* @return
* @throws SQLException
*/
@Override
public JSONArray getNullableResult(ResultSet rs, String columnName) throws SQLException {
String sqlJson = rs.getString(columnName);
if (null != sqlJson) {
return JSONArray.parseArray(sqlJson);
}
return null;
}
/**
* 根据列索引,获取可以为空的结果
*
* @param rs
* @param columnIndex
* @return
* @throws SQLException
*/
@Override
public JSONArray getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String sqlJson = rs.getString(columnIndex);
if (null != sqlJson) {
return JSONArray.parseArray(sqlJson);
}
return null;
}
@Override
public JSONArray getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String sqlJson = cs.getString(columnIndex);
if (null != sqlJson) {
return JSONArray.parseArray(sqlJson);
}
return null;
}
}
MySqlJsonHandler
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
/**
* @Author: Mickey
* @Date: 2019/7/1 10:22
* @Version 1.0
*/
@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MySqlJsonHandler extends BaseTypeHandler<JSONObject> {
/**
* 设置非空参数
*
* @param ps
* @param i
* @param parameter
* @param jdbcType
* @throws SQLException
*/
@Override
public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType)
throws SQLException {
ps.setString(i, String.valueOf(parameter.toJSONString()));
}
/**
* 根据列名,获取可以为空的结果
*
* @param rs
* @param columnName
* @return
* @throws SQLException
*/
@Override
public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {
String sqlJson = rs.getString(columnName);
if (null != sqlJson) {
return JSONObject.parseObject(sqlJson);
}
return null;
}
/**
* 根据列索引,获取可以为空的结果
*
* @param rs
* @param columnIndex
* @return
* @throws SQLException
*/
@Override
public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String sqlJson = rs.getString(columnIndex);
if (null != sqlJson) {
return JSONObject.parseObject(sqlJson);
}
return null;
}
@Override
public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String sqlJson = cs.getString(columnIndex);
if (null != sqlJson) {
return JSONObject.parseObject(sqlJson);
}
return null;
}
}
dao层使用
说明:
上面部分为字段类型映射
下面部分为具体使用设置参数时指定字段类型
@Results(id = "resultMap", value = {@Result(column = "task", property = "task", jdbcType = JdbcType.OTHER, typeHandler = com.geespace.microservices.data.computing.model.server.handler.MySqlJsonHandler.class),
====================================================================================
if (!StringUtils.isEmpty(dragSparkTask.getTask())) {
sql.VALUES("task", "#{task, jdbcType =OTHER, typeHandler =\n"
"com.geespace.microservices.data.computing.model.server.handler.MySqlJsonHandler}");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程