相关推荐
MyBatis拦截器实现数据库字段透明加解密:注解驱动与AES-GCM实践
在数据安全领域,数据库字段级加密是保护敏感信息(如用户身份、金融数据)的核心技术之一。其基本原理是在数据持久化前进行加密,查询后自动解密,确保数据在存储态为密文,在使用态为明文。这项技术的核心价值在于实现安全与便利的平衡,既能满足合规要求,又避免业务代码被加解密逻辑深度耦合。典型的应用场景包括用户隐私信息保护、支付系统数据安全等。本文聚焦于利用MyBatis拦截器机制,通过自定义注解(如@EncryptedField)和AES-GCM等对称加密算法,构建一个对业务代码无侵入的透明加解密层,实现数据从Java
mybatis 将sql拼接成String类型的变量当做参数传入执行
mybatis 将sql拼接成String类型的变量当做参数传入执行 mybatis 将sql拼接成String类型的变量当做参数传入执行 遇坑 之前传参数都是使用#{}的方式去传递,这样SQL就能拼接传来. 但是这次是一个完整的string类型的sql变量传入,**我很天真的.......#{sql}.** 很尴尬,出错了!!!! 错误提示就是,某某某处语法错误.但是如果把sql语句在数据库执行...
Spring AOP实现数据库字段透明加解密:MyBatis/JPA敏感数据安全存储方案
在数据安全领域,敏感信息加密存储是保障业务合规性的基础要求。其核心原理是通过密码学算法对明文数据进行转换,确保即使数据泄露也无法被直接识别。从技术价值看,透明加解密技术能在不改变业务逻辑的前提下,实现数据存储层的自动安全防护,大幅降低开发复杂度和人为遗漏风险。应用场景广泛覆盖金融、医疗、电商等涉及用户隐私数据的行业,尤其在处理身份证号、手机号等PII信息时至关重要。本文聚焦于利用Spring AOP切面编程,结合AES-256-GCM等加密算法,为MyBatis和JPA持久层框架提供一套字段级透明加解密解决
MyBatis TypeHandler 实战指南:自定义类型转换与案例解析
Mybatis TypeHandler介绍使用举例,主要回顾Mybatis的原理内容,在介绍TypeHandler的基本功能,最后给出使用TypeHandler的样例和注意事项等内容
mybatis中传入String类型参数的问题
1. 出现的问题需求是想写一个按公司名字查询公司列表的功能,最开始的代码如下 Dao层接口如下:@MyBatisDao public interface OfficeDao extends TreeDao<Office> { List<Office> findCompanyNameList(String name); }mybatis的xml代码:<select id="findCompa
关于mybatis传入数字0被判断为空的问题
<if test="status!= null and status!= ''"> status=#{status}, </if> 在mybatis中这样写的话,如果是String类型的话是没有任何问题的,但是如果是传入的Integer等数字类型的话就会出现传入0被判断为空的现象,但是也不是必现的,为什么不是必现的也不太清,但是如果变量的值是0,即 status= 0, mybatis在进行 status!= ‘’ 的时候会认为 status的值是空字符串, 即 st...
MyBatis02-mybatis-config.xml配置文件讲解
mybatis-config.xml核心配置文件,内容的讲解
Spring Boot整合MyBatis-Flex实现数据库连接信息加密配置实战
在Java企业级应用开发中,数据库连接配置的安全性至关重要。通过对称加密算法对敏感信息进行保护,能够有效防止配置泄露导致的数据安全风险。其技术原理是在应用启动阶段,通过自定义环境处理器拦截加密属性,利用密钥进行实时解密,确保数据源获取到的是明文信息。这一实践不仅提升了系统的安全基线,还实现了对业务代码的透明化处理。在Spring Boot生态中,结合MyBatis-Flex框架,可以优雅地实现配置加解密流程。本文聚焦于利用Jasypt库和EnvironmentPostProcessor扩展点,详解如何为My
MyBatis复习(四):#{}占位符与SQL传参
MyBatis处理#{},是通过PreparedStatement的set方法来赋值(Stirng类型参数在解析时会自动加上双引号,其它数据类型则不加双引号),可以有效的防止SQL注入,提高系统安全性
解决mybatis查询DECIMAL类型数据小数点后精度缺失丢失为0的小数
利用SSM框架查询数据库数据时,当数据库数据类型为decimal(18,2),此时若数据库数据为12.34,后台获取结果也为12.34,这时看上去数据获取没有任何问题,但是当数据库数据为22.00,后台获取结果则变为22,小数点后两位.00丢失,即精度缺失.这是由于mybatis在进行数据映射的时候,若数据库中字段的类型是decimal、float、double,java类对应字段的类型为BigD...
Mybatis使用if标签传入参数为String可能遇到的错误
说明: 最近在使用动态SQL中的<if>标签合并接口和SQL的过程遇到了一些坑,放在这记录一下 首先我们有下面这样一个mapper接口(根据status变量来选择不同的SQL): 问题:There is no getter for property named 'xxxx' in 'class java.lang.String' 原因:Mybatis默认采用OGNL解...
传入mapper中的string乱码怎么解决_MyBatis 中 # 与 $ 的区别
MyBatis 其实老早就用过,后来因为业务的关系,就又把之前学的东西都给还回去了。现在在新公司又要用 MyBatis,就再复习一下。MyBatis 中使用 parameterType 向 SQL 语句传参,parameterType 后的类型可以是基本类型 int,String,HashMap 或 Java 自定义类型。在 SQL 中引用这些参数的时候,可以使用两种方式:#{parameterN...
当mapper中的parametType为基本类型(如int,string等)时,报错的问题(mybatis使用了<if>判断)
原博客网址: http://blog.csdn.net/qq_28885149/article/details/52211999 当mapper中的parametType为基本类型(如int,string等)时,是怎样使用的 最简单的使用方法: [html] view plain copy select id="
MyBatis-Plus字段级数据加密实战:基于TypeHandler与MetaObjectHandler的透明化方案
数据安全是软件开发的基石,尤其在处理用户隐私和金融信息时,数据库层面的敏感数据保护至关重要。其核心原理在于,在数据持久化过程中,对特定字段进行加密转换,确保存储的密文即使泄露也无法直接识别。这一技术能有效防范“拖库”风险,为业务数据构建底层安全防线。在Java生态中,MyBatis-Plus作为广泛使用的ORM框架,其提供的**类型处理器(TypeHandler)** 与**元对象处理器(MetaObjectHandler)** 两大扩展机制,为实现非侵入式的字段级加密提供了优雅的工程实践路径。通过自定义T
开发规范 - 空指针异常等低级问题注意点
对任何对象(从request(前端、aop)中,从缓存/数据库中拿)拿出来时、做读写getter/setter处理操作的时候,都把它当成空的对待,先做非空判断和空值处理不要把null作为方法参数,至少传入一个空对象,一个方法被调用十几次(复用性角度),其中只有一个参数为null,极易出现空指针异常。
基于MyBatis拦截器实现数据字段自动加解密的工程实践
在数据安全领域,数据库字段加密是保护敏感信息(如用户隐私、金融数据)的核心技术之一。其基本原理是在数据持久化到数据库前进行加密,查询时再解密,确保磁盘存储的为密文,内存中处理的为明文。这项技术的核心价值在于实现安全与开发的平衡,它通过无侵入的方式将加密逻辑与业务代码解耦,极大提升了系统的可维护性和安全策略的灵活性。在Java生态中,MyBatis拦截器为实现这一机制提供了优雅的切入点,通过拦截SQL执行生命周期,可自动完成指定字段的加解密。典型的应用场景包括用户手机号、身份证号等敏感信息的存储。本文以AES
mybatis小知识点
1、配置insert的mapper时,可能为空的字段需要指定jdbcType:#{paymentBaseNo,jdbcType=VARCHAR} 2、parameterType="String"时,使用的变量名为:_parameter,例如: select ${_parameter}.NEXTVAL FROM DUAL 3、foreach用法: 1. 如果传入的是单参
MyBatis String类型传递参数注意事项
Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'ids' in 'class java.lang.String'。 后来改成如下写法,无论参数名是啥,都要改成"_parameter" 如下: 1 <select id="findByName" parameterType="string" resultTy...
497




被折叠的 条评论
为什么被折叠?



