`

通过MyBatis实现图片数据的存储 与读取

 
阅读更多

开发环境:

Mybatis:3.0.5

MySQL:5.x

 

1. 数据库Scheme

--
-- Table structure for table `user_graphic_t`
--

DROP TABLE IF EXISTS `user_graphic_t`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user_graphic_t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `graphic_data` blob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=360 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

2. Mapper文件

<resultMap id="userGraphicMap" type="userGraphicVo">
		<id column="id" property="id" jdbcType="DECIMAL" />
		<result column="graphic_data" property="graphicData" jdbcType="BLOB" />



</resultMap>

<sql id="resultColumn">
		id,graphic_data
</sql>
	
<insert id="insertUserGraphic" parameterType="userGraphicVo">
		INSERT INTO user_graphic_t (
		<include refid="resultColumn" />
		)
		values (
		#{id},,#{graphicData}
		)
</insert>
	
<select id="selectUserGraphic" parameterType="java.lang.Long" resultMap="userGraphicMap">
		SELECT
		<include refid="resultColumn" />
		from user_graphic_t WHERE
		id=#{id} 
		order by id desc
</select>

3. 映射VO:

public class UserGraphicVo {

	private Long id;
	
	private byte[] graphicData;

       //get/set方法
}

4. DAO层调用

public void addUserGraphic(UserGraphicVo userGraphicVo) {
		getSqlSessionTemplate().insert("userGraphicVo.insertUserGraphic",  userGraphicVo);
}

5.  JSP页面展示图片

<img src="${ctxPath}/apps/showImage.action?id=${userGraphic.id}" />

 6. Action处理

public void showReportImage() {
                response.setContentType("image/jpeg");

                if (!"".equals(id)) {
			List<UserGraphicVo> list = userGraphicService.findUserGraphicVoById(id);
			if(null != list && !list.isEmpty()){
				OutputStream os = null;
				try {
					os = response.getOutputStream();
					os.write(list.get(0).getGraphicData());
					os.flush();
				} catch (IOException e) {
					Log.info("读取文件出错!" + e.getMessage());
				} finally {
					if(null != os){
						try {
							os.close();
						} catch (IOException e) {
							Log.info("关闭文件输出流出错!" + e.getMessage());
						}
					}
				}				
			}
		}
	}

7. 参考资料

    http://springsfeng.iteye.com/blog/1630672

    http://blog.csdn.net/pzhtpf/article/details/7400606

    http://springsfeng.iteye.com/admin/blogs/1630698

    http://hi.baidu.com/dcjob/blog/item/cd0cb809d8e43e3ce824886a.html

分享到:
评论

相关推荐

    mybatis 存储数据对象数据自动加解密插件

    针对这一需求,"mybatis 存储数据对象数据自动加解密插件"应运而生,它旨在为Mybatis提供一个便捷的数据加解密解决方案,以确保数据在存储和检索过程中的安全性。 该插件的工作原理是在数据被持久化到数据库之前...

    基于mybatis 来实现对敏感数据在进出DB时候进行脱敏处理, 让各位码友们无需自己各种手动实现

    通过上述方式,我们可以借助 MyBatis 的拦截器和插件机制,轻松地实现在数据库操作时对敏感数据的自动脱敏,从而提高数据安全性。同时,这也是一个良好的实践,可以减少手动处理的繁琐工作,让开发者更专注于业务...

    基于Mybatis的Java程序,可以读取mysql的内容并打印(内含jar包)

    【Mybatis基础与Java程序结合】 Mybatis是一个优秀的持久层框架,它...对Mybatis、Java和MySQL感兴趣的初学者可以通过此程序了解如何在Java应用程序中实现数据库操作,同时,由于无需服务器环境,使得学习更加便捷。

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis ...通过使用 MyBatis 处理 CLOB 和 BLOB 类型数据,可以方便地存储和读取大字段类型的数据,提高应用程序的性能和可扩展性。

    springMVC+mybatis实现登录和增删改查

    在本项目中,"springMVC+mybatis实现登录和增删改查"是一个典型的Web应用程序,它结合了SpringMVC、MyBatis两大主流框架,以及Bootstrap前端库,来构建一个用户友好的数据管理平台。以下是这个项目涉及到的主要知识...

    使用mybatis实现CRUD

    标题 "使用mybatis实现CRUD" 涉及到的是在Java开发中使用MyBatis框架进行基本的数据操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储...

    spring整合mybatis多数据源

    在IT行业中,Spring框架与MyBatis的整合是常见的数据访问技术组合,它们可以提供灵活、高效的数据库操作。当我们需要处理多个数据源时,例如在分布式系统或读写分离的场景下,Spring整合MyBatis的多数据源切换就显得...

    mybatis-plus多数据源/动态数据源配置示例代码

    多数据源意味着系统中存在不止一个数据存储,每个数据源可能对应不同的数据库,如MySQL、Oracle或SQL Server。在Java Web应用中,这通常通过DataSource接口实现,每个数据源都由一个DataSource实例表示。 1. **配置...

    springboot+mybatis配置多数据源,通过注解自动切换

    - 在MyBatis的Mapper接口方法上也可以使用自定义注解,与Spring AOP配合,实现数据源的切换。 6. **测试验证** - 编写单元测试或者集成测试,确保在切换数据源后,数据操作正确执行在目标数据库上。 通过以上...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    mybatis数据操作(增删改查+批量操作)

    在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...

    springboot+mybatis+poi 实现excel导入导出

    通过以上步骤,我们就可以在SpringBoot应用中实现基于MyBatis和Apache POI的Excel导入导出功能。这在数据分析、报表生成、数据交换等场景中非常实用,大大提高了工作效率。同时,这个过程也涉及到文件I/O操作、数据...

    Spring MVC+Mybatis整合实现用户登录以及增删改查功能

    在本项目中,我们主要探讨的是如何将Spring MVC与Mybatis框架进行整合,以实现一个完整的用户管理系统,包括用户登录和基本的CRUD(创建、读取、更新、删除)操作。Spring MVC作为Spring框架的一部分,是用于构建Web...

    手撕Mybatis源码,自己动手实现Mybatis

    在解析配置文件后,Mybatis 将元数据存储在这个对象中,用于后续的SQL执行。 3. **SqlSession**: SqlSession 提供了与数据库交互的方法,如插入、更新、删除和查询。每次数据库操作都需要一个新的 SqlSession 实例...

    mybatis中操作json类型数据(csdn)————程序.pdf

    总结来说,MyBatis通过自定义TypeHandler实现了对MySQL JSON字段的映射,利用Jackson库进行JSON数据的序列化和反序列化,确保Java对象和数据库中的JSON数据能顺利地进行转换和交互。在处理复杂的数据结构时,这样的...

    springboot+mybatis整合实现注册登录

    在本项目中,"springboot+mybatis整合实现注册登录"是一个典型的Web应用程序开发实例,主要涉及Spring Boot和MyBatis两大技术框架的融合应用。Spring Boot简化了Spring应用程序的初始搭建以及开发过程,而MyBatis则...

    spring mvc +mybatis框架实现增删查改

    本文将深入探讨如何使用这两个框架与MySQL数据库配合,实现对数据表的增(Add)、删(Delete)、查(Query)和改(Update)等基本操作。 首先,让我们了解Spring MVC。Spring MVC是Spring框架的一个模块,专门用于...

    JAVA接口自动化测试MyBatis+MySQL实现用例管理

    MyBatis作为一个轻量级的持久层框架,与MySQL数据库结合,可以高效地处理数据操作。本教程将深入探讨如何利用这些技术实现接口自动化测试用例的管理。 首先,我们要理解接口自动化测试的基本概念。接口自动化测试...

    springboot+mybatis动态切换数据源完整项目架构

    在SpringBoot中集成MyBatis,可以通过Spring的注解驱动和MyBatis的XML配置实现数据访问。 动态数据源切换是该项目的核心特性。在实际业务中,可能需要根据不同的用户、不同的业务逻辑来选择不同的数据源,例如,将...

    springboot2.0+mybatis主从数据库双数据源。

    本项目基于SpringBoot 2.0框架和MyBatis持久层技术,实现了主从数据库双数据源的配置,确保在高并发环境下既能保证数据的一致性,又能提升读取效率。 SpringBoot 2.0是Spring框架的一个轻量级版本,它简化了Spring...

Global site tag (gtag.js) - Google Analytics