mybatis学习之CLOB、BLOB处理及多参数方法映射

CLOB数据mysql对应数据类型为longtext、BLOB类型为longblob:

model实体:

...
private Integer id;
private String name;
private int age;

private byte[] pic; // 映射blob
private String remark; // 映射longtext
...

1、blob、clob数据插入:

<insert id="insertStudent" parameterType="Student">
    insert into t_student values(null,#{name},#{age},#{pic},#{remark})
</insert>

对应Dao接口:

/**
* 插入学生
* @param student
* @return
*/
public int insertStudent(Student student);

junit测试:

@Test
    public void testInsert() throws Exception {
        logger.info("新增学生");
        Student student = new Student();
        student.setAge(12);
        student.setName("晁州");
        student.setRemark("长文本");
        byte[] pic = null;
        try {
            File file = new File("c://test.png");
            InputStream is = new FileInputStream(file);
            pic = new byte[is.available()];
            is.read(pic);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        student.setPic(pic);
        studentDao.insertStudent(student);
        sqlSession.commit();
    }

2、blob、clob数据查询(blob数据查询出来对应java的byte[]):

<select id="getStudentById" parameterType="Integer" resultType="Student">
    select * from t_student where id = #{id}
</select>

Dao接口部分:

@Test
    public void testGet() throws Exception {
        logger.info("查询学生");
        Student student = studentDao.getStudentById(34);
        System.out.println(student);
        byte[] pic = student.getPic();
        try {
            File file = new File("c://output.png");
            OutputStream os = new FileOutputStream(file);
            os.write(pic);
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3、mybatis的多参数查询:

Dao接口部分:

/**
     * 根据姓名和年龄进行查询(mybatis多参数查询)
     * @param name
     * @param age
     * @return
     */
    public List<Student> getStudentsBy2Args(String name,Integer age);

对应mapper映射:

<select id="getStudentsBy2Args" resultMap="StudentResult">
    select * from t_student where name like #{param1} and age = #{param2}        <!-- 与方法的参数顺序一一对应 -->
</select>

junit测试:

@Test
    public void testGetStudentsBy2Args() throws Exception {
        List<Student> students = studentDao.getStudentsBy2Args("%晁%", 24);
        for (Student student : students) {
            System.out.println("####### "+student);
        }
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java达人

Java 枚举7常见种用法

用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl…. 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,...

2208
来自专栏coding...

C语言基础 - 实现单向链表

1353
来自专栏Spark学习技巧

Java中定义常量(Constant) 的几种方法

为了方便大家交流Spark大数据,浪尖建了微信群,目前人数过多,只能通过浪尖或者在群里的朋友拉入群。纯技术交流,偶有吹水,但是打广告,不提醒,直接踢出。有兴趣加...

1053
来自专栏静默虚空的博客

Java 枚举用法详解

概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下: ...

24210
来自专栏偏前端工程师的驿站

Java魔法堂:枚举类型详解

一、前言                                   Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的...

2126
来自专栏后端之路

枚举高性能之EnumMap

背景 想必使用Java5之后枚举已经是每一个Java开发者很常用的工具了。特别是用来实现单例模式通过枚举也是一种推荐的方式。 大部分开发者也有根据枚举回去Map...

27210
来自专栏冰霜之地

ReactiveCocoa 中 集合类 RACSequence 和 RACTuple 底层实现分析

在OOP的世界里使用FRP的思想来编程,光有函数这种一等公民,还是无法满足我们一些需求的。因此还是需要引用变量来完成各式各样的类的操作行为。

1065
来自专栏Spark学习技巧

Java枚举(enum)七种常见的用法

DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。 用法一:常量 在JDK1.5 之前,我们定义常量都是:...

2583
来自专栏java技术学习之道

Java 枚举7常见种用法

1325
来自专栏龙首琴剑庐

Java多态性的“飘渺之旅”

朵星人A:人类,是一个很奇妙的物种。 朵星人B:他们好像分为两种,嗯 先生,以及美女? 朵星人C:对,更年轻的有叫 美少女的。 朵星人D:他们之间怎么打招呼的?...

3637

扫码关注云+社区