Bulk insert (multi-row vs. batch) using JDBC and MyBatis

I have seen some developers are using multi-row insert in MyBatis to perform bulk insert.
If performance is your concern, though, you should consider using batch insert instead especially when the number of rows to insert is large.

In this post, I will show you the advantage of batch insert over multi-row insert.
The project that I used for profiling is available on GitHub.


Hosting Eclipse Plugin Update Site (p2 repository) on Bintray

In Bintray, once a file is published, it cannot be deleted or modified after 5 days. And a published version cannot be deleted after 30 days according to their user guide.
This is why I first thought I cannot use Bintray to host my Eclipse plugin because some files in p2 repository (artifacts.jar, content.jar) must be overwritten when releasing a new version of a plugin.

But after asking their support, it turned out that Bintray supports the p2 repository file structure and can be used for an Update Site of Eclipse Plugins.


Stripes : store action bean field value in session

When storing a complex object in session, it becomes a little bit tricky to control binding and validation.
For simple objects, the wizard fields is sufficient, but I sometimes have to deal with an object which is too complex to keep it around using wizard fields.


Convert HTML files to PDF using webkit rendering engine

An AppleScript to convert HTML files to PDFs.
It uses wkhtmltopdf for the actual conversion task.


Ibator's deleteByExample() and MySQL.

If you use 'alias' when generating Ibator artifacts and your database is MySQL, you cannot use deleteByExample() because of MySQL bug #12811.
To workaround the issue, you can use the following plugin.

Adds equals() and hashCode() to Ibator's example classes.

Ibator includes EqualsHashCodePlugin by default.
It adds equals() and hashCode() methods to the domain classes.
As I want to add these methods to example classes, I wrote another plugin.

Avoid RuntimeException when null is passed to Ibator's example class.

Ibator's example classes are useful, but it throws RuntimeException when the passed value is null.
This is inconvenient when building a dynamic query conditions.


Ibator plugin to add LIMIT clause to the example class

This Ibator plugin adds setLimitClause() method to example class.


Ibator plugins for spring annotation users.

Ibator 1.2.x provides plugin architecture.
I like the plugin system and write some custom ones for my daily use.
The first plugin adds Spring's @Repository annotation to the DAO implementation class.