首先是实体类:
import java.util.Date;
public class Test {
int id;
String name;
Date createDate;
byte[] photo;
}
建表语句:
CREATE TABLE `Test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`createDate` datetime DEFAULT NULL,
`photo` longblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
mapper映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.yufeng.test.model.TestMapper">
<select id="list" resultType="cn.yufeng.test.model.Test" >
select * from Test
</select>
<insert id="add" parameterType="cn.yufeng.test.model.Test" >
insert into Test(name,photo,createDate) values(#{name},#{photo},#{createDate,jdbcType=TIMESTAMP})
</insert>
</mapper>
mapper映射接口:
import java.util.List;
import org.apache.ibatis.annotations.Select;
public interface TestMapper {
public List<Test> list();
@Select("select * from Test where id = #{id}")
public Test get(int id);
public int add(Test test);
}
操作方法:
private static void testAdd() throws IOException{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = factory.openSession();
Test test = new Test();
test.setCreateDate(new Date());
test.setName("测试数据");
test.setPhoto(FileUtils.getFileBytes("/Users/YuFeng/Library/Containers/com.lovebizhi.mac/Data/Documents/lovewallpaper/download/10335569,1440,900.jpg"));
session.getMapper(TestMapper.class).add(test);
session.commit();
session.close();
}
结果:
表结构:
PS:将文件转化成字节流的工具类:
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileUtils {
public static byte[] getFileBytes(String filename) throws IOException{
File file = new File(filename);
if(!file.exists()){
return null;
}
FileInputStream in = new FileInputStream(file);
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte tmp[] = new byte[1024];
while((in.read(tmp)) != -1){
out.write(tmp);
}
in.close();
return out.toByteArray();
}
}