mybatis を使用してイメージを MySQL に保存する方法を教えてください。jdbcコードで画像をMySQLに保存できますが、MyBatisを使用して同じことをしたいのですが、うまく機能しません。私のマッパーは次のとおりです。
<mapper namespace = "myinfo.beans.Resources">
<!-- For Resources Table -->
<insert id="insertResource" parameterType="myinfo.beans.Resources">
insert into resources(res_name, res_type, res_content,res_path) values (#{res_name, jdbcType=VARCHAR},#{res_type, jdbcType=VARCHAR}, #{res_content, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler}, #{res_path, jdbcType=VARCHAR})
</insert>
</mapper>
そしてエンティティは
public class Resources {
private int res_id;
private String res_name;
private String res_type;
private byte[] res_content;
private String res_path;
...
}
ダオコードは次のとおりです。
public void insertResource (Resources res){
session = sqlfactory.openSession();
try {
session.insert("insertResource",res);
} catch (Exception ex) {
Logger.getLogger(ResourcesDao.class.getName()).log(Level.SEVERE, null, ex);
}
finally {
session.close();
}
}
そして、私はdaoを次のように呼び出します:
public void createNewResource() {
try {
File file = new File("d:/DSC_0009.JPG");
fis = new FileInputStream(file);
byte[] photodata = new byte[(int)file.length()];
fis.read(photodata);
Resources res = new Resources();
res.setRes_content(photodata);
res.setRes_name("Sunny_Ho");
res.setRes_type("photho");
res.setRes_path("d:/");
res_dao.insertResource(res);
} catch (FileNotFoundException ex) {
Logger.getLogger(ResourcesController.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex){
Logger.getLogger(ResourcesController.class.getName()).log(Level.SEVERE, null, ex);
}
}
私のテーブルは
CREATE TABLE `resources` (
`res_id` int(11) NOT NULL AUTO_INCREMENT,
`res_name` varchar(255) NOT NULL,
`res_type` varchar(20) DEFAULT NULL,
`res_content` longblob,
`res_path` varchar(255) DEFAULT NULL,
PRIMARY KEY (`res_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
これらのコードをメイン クラスで実行すると、エラーは表示されませんが、レコードを挿入できません。
何が問題なのか指摘してください、ありがとう