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

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.写测试方法:

@Test
	public 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.添加测试方法:

@Test
	public 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.写测试方法:

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

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值