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多态性的“飘渺之旅”

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

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

Java 枚举用法详解

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

436100
来自专栏前端布道

JavaScript之对象继承

该方法创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。

10430
来自专栏java一日一条

java enum(枚举)使用详解 + 总结

enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。

21710
来自专栏Spark学习技巧

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

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

28430
来自专栏代码拾遗

​反射基础之Enum

因为枚举也是一个类,所以也可以通过Field,Method,Constructor的反射API获取其他信息:

14130
来自专栏Java技术分享

枚举常见的七种用法

 JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

22070
来自专栏微信公众号:Java团长

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

DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

12940
来自专栏wannshan(javaer,RPC)

dubbo序列化过程源码分析

先看下dubbo在serialize层的类设计方案 序列化方案的入口,是接口Serialization的实现类。 /** * Serialization. ...

91990
来自专栏跟着阿笨一起玩NET

C#中char[]与string之间的转换;byte[]与string之间的转化

34210

扫码关注云+社区

领取腾讯云代金券