Pada tutorial yang lalu sudah saya bahas penggunaan MyBatis sebagai persistence framework untuk melakukan operasi CRUD serta bagaimana membuat mapping-nya. Tulisan kali ini akan tidak jauh berbeda dengan sebelumnya. Jika kemarin untuk CRUD dan mapping menggunakan xml maka kali ini menggunakan java annotation.
Java Annotation Config
Menggunakan konfigurasi annotation akan ada sedikit perbedaan pada beberapa file yaitu file mybatis-config.xml serta interface UserMapper.java. Saya tidak akan mengulangi lagi pembuatan beberapa kelas serta konfigurasi yang sudah ada, saya hanya akan menulis file-file yang diubah. Untuk mengetahui secara lengkap file-file serta kelas-kelas yang ada silahkan baca tulisan terdahulu disini
Perubahan pada file mybatis-config dapat dilihat dibawah ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-config.dtd'> <configuration> <properties resource='jdbc.properties'/> <typeAliases> <typeAlias type='com.agungsetiawan.tutorialmybatis.domain.User' alias='User'></typeAlias> </typeAliases> <environments default='development'> <environment id='development'> <transactionManager type='JDBC'/> <dataSource type='POOLED'> <property name='driver' value='${jdbc.driverClassName}'/> <property name='url' value='${jdbc.url}'/> <property name='username' value='${jdbc.username}'/> <property name='password' value='${jdbc.password}'/> </dataSource> </environment> </environments> <mappers> <mapper resource='mapper/UserMapper.xml'/> </mappers> </configuration> |
Bagian yang saya tandai merupakan bagian yang mengalami perubahan. Pada bagian pertama yang saya tandai akan dihilangkan, kita tidak memerlukannya. Sedangkan pada bagian yang kedua akan kita ubah. Lebih jelasnya perbedaan dpat dilihat pada file mybatis-config yang baru
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-config.dtd'> <configuration> <properties resource='jdbc.properties'/> <environments default='development'> <environment id='development'> <transactionManager type='JDBC'/> <dataSource type='POOLED'> <property name='driver' value='${jdbc.driverClassName}'/> <property name='url' value='${jdbc.url}'/> <property name='username' value='${jdbc.username}'/> <property name='password' value='${jdbc.password}'/> </dataSource> </environment> </environments> <mappers> <mapper class="com.agungsetiawan.tutorialmybatis.mapper.UserMapper"/> </mappers> </configuration> |
Berikutnya perubahan pada interface UserMapper. Berikut adalah sebelum mengalami perubahan
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.agungsetiawan.tutorialmybatis.mapper; import java.util.List; import com.agungsetiawan.tutorialmybatis.domain.User; public interface UserMapper { public void save(User user); public void edit(User user ); public void delete(Integer id); public User findOne(Integer id); public List<User> findAll(); } |
Dan dibawah ini adalah interface UserMapper terbaru yang menggunakan konfigurasi annotation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com.agungsetiawan.tutorialmybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import com.agungsetiawan.tutorialmybatis.domain.User; public interface UserMapper { @Insert("INSERT INTO USER(email, password, first_name, last_name) VALUES(#{email}, #{password}, #{firstName}, #{lastName})") @Options(useGeneratedKeys=true,keyProperty="userId") public void save(User user); @Update("UPDATE USER SET EMAIL=#{email}, PASSWORD= #{password}, FIRST_NAME = #{firstName}, LAST_NAME = #{lastName} WHERE USER_ID = #{userId}") public void edit(User user ); @Delete("DELETE FROM USER WHERE USER_ID = #{userId}") public void delete(Integer id); @Select("SELECT user_id as userId, email as email, password, first_name as firstName, last_name as lastName FROM USER WHERE USER_ID = #{userId}") public User findOne(Integer id); @Select("SELECT * FROM USER") @Results({ @Result(id=true,property="userId", column="user_id"), @Result(property="email", column="email"), @Result(property="password", column="password"), @Result(property="firstName", column="first_name"), @Result(property="lastName", column="last_name") }) public List<User> findAll(); } |
Penutup
Pada tulisan kali ini kita sudah belajar bagaimana menggunakan annotation untuk konfigurasi pada MyBatis alih-alih menggunakan xml. Kedua cara tersebut sama-sama baik digunakan tinggal tergantung kita suka dan cocok dengan cara yang mana. Kalau saya pribadi menyukai cara annotation karena gampang “dihafal”.
Semoga bermanfaat 😀
Good job friend…thanks