J2EE系列之MyBatis学习笔记(八)-- 杂项

来源:互联网 发布:证券分析软件 编辑:程序博客网 时间:2024/06/05 09:45

mybatis最主要的知识已经讲完。这篇博客将一些mybatis的细节知识。

一、处理CLOB、BLOB 类型数据

CLOB是大文本类型的数据,比如小说这种很多字符的数据。BLOB是二进制数据,用来存放图片、视频等数据。

1.打开mysql数据库,把t_student表进行修改如下:删除与t_grade和t_address表的关联关系,并添加新的字段为:


这里添加了字段pic,这个字段存储学生的相片,类型为longblob,mysql中blob类型比较小,这里使用longblob。字段remark存储学生的简历,使用longtext类型(clob类型在mysql中为longtext)

2.修改类Student为:


这里相应的添加了两个属性代表学生的相片和建立了。生成这两个属性的get和set方法。

3.StudentMapper中添加接口:

public int insertStudent(Student student);public Student getStudentById(Integer id);
添加了两个方法分别为添加学生和获取学生


4.sql映射器中实现这两个方法:

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

这里先实现插入方法。

5.写测试方法:

@Testpublic void testInsertStudent(){logger.info("添加学生");Student student = new Student();student.setName("张三4");student.setAge(14);student.setRemark("很长的文本");byte[] pic = null;try{File file = new File("C://boy.jpg");InputStream inputStream = new FileInputStream(file);pic = new byte[inputStream.available()];inputStream.read(pic);inputStream.close();}catch(Exception e){e.printStackTrace();}student.setPic(pic);studentMapper.insertStudent(student);sqlSession.commit();}

这里特别注意对照片的处理。使用的是二进制流的方式把照片存入到数据库中。

运行测试方法:


可以发现图片和文本已经存入到了数据库中。双击图片,能够显示出图片。


5.获取学生方法实现:

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

6.添加测试方法:

@Testpublic void testGetStudentById(){logger.info("通过id查找学生");Student student = studentMapper.getStudentById(6);System.out.println(student);byte[] pic = student.getPic();try{File file = new File("D://boy2.jpg");OutputStream outputStream = new FileOutputStream(file);outputStream.write(pic);outputStream.close();}catch(Exception e){e.printStackTrace();}}
这里把数据库中的图片取出后放在了d盘下。

运行测试方法,可以发现D盘出现了需要的图片。


二、传入多个输入参数

前面的例子中讲到的传入多个输入参数时使用的是map类型,这个是最常用的方式,以后的开发中都要使用这种方式。这里要讲的传入多个参数知识只是作为了解,使用不到。

1.添加接口方法

public List<Student> searchStudents6(String name,int age);
这个查询中传入了两个参数(实际开发中使用map形式),通过这两个参数来查询学生。


2.实现这个方法:

<select id="searchStudents6" resultMap="StudentResult">select * from t_student where name like #{param1} and age=#{param2}</select>

这里注意了,使用param1代表第一个输出的参数,使用param2代表第二个输入的参数。


3.写测试方法:

@Testpublic void testSearchStudents6() {logger.info("查询学生(带条件)");List<Student> studentList =  studentMapper.searchStudents6("%李%",11);for(Student s:studentList){System.out.println(s);}}

运行这个测试方法,得到相应的数据。


阅读全文
0 0