2

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

これらのコードをメイン クラスで実行すると、エラーは表示されませんが、レコードを挿入できません。

何が問題なのか指摘してください、ありがとう

4

0 に答える 0