- vừa được xem lúc

Sử dụng MyBatis Java Framework với Spring boot

0 0 11

Người đăng: LDT

Theo Viblo Asia

1. Giới thiệu vấn đề

Gần đây mình mới join một project mới, thay vì việc sử dụng Spring Data để mapping với dữ liệu từ database thì project sử dụng MyBatis Framework. Sau quá trình dùng, mình thấy cũng có 1 số tính năng khá hay nên viết bài này để tổng hợp kiến thức và chia sẻ cùng mọi người. Mình sẽ không đi sâu vào lý thuyết mà đi thẳng vào sample

2. Cách sử dụng

2.1. Định nghĩa

Xem ở đây

2.2. Thêm dependencies

Thêm thử viện MyBatis vào project

 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency>

2.2. Khai báo path đến các config file trong application.properties

Trong ví dụ này ta để files trong resources folder

mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mappers/*.xml

mybatis/mybatis-config.xml là file config tổng

<?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> <typeAliases> <typeAlias alias="Integer" type="java.lang.Integer"/> <typeAlias alias="Long" type="java.lang.Long"/> <typeAlias alias="HashMap" type="java.util.HashMap"/> <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/> <typeAlias alias="ArrayList" type="java.util.ArrayList"/> <typeAlias alias="LinkedList" type="java.util.LinkedList"/> <typeAlias type="com.example.mybatis3.model.Employee" alias="Employee"/> </typeAliases>
</configuration>

Với mỗi object, ta sẽ tạo từng file mapper riêng trong thư mục mybatis/mappers/*.xml

<?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="com.example.mybatis3.mapper.EmployeeMapper"> <resultMap id="EmployeeResultMap" type="Employee"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="first_name" property="firstName" jdbcType="VARCHAR"/> <result column="last_name" property="lastName" jdbcType="VARCHAR"/> <result column="email_address" property="emailId" jdbcType="VARCHAR"/> </resultMap> <sql id="Base_Column_List"> id , first_name, last_name, email_address </sql> <select id="findAll" resultMap="EmployeeResultMap"> SELECT <include refid="Base_Column_List"/> FROM employees </select> <insert id="insert" parameterType="Employee"> INSERT INTO employees(id, first_name, last_name, email_address) VALUES (#{id}, #{firstName}, #{lastName}, #{emailId}) </insert> <select id="findById" resultMap="EmployeeResultMap" parameterType="long"> SELECT <include refid="Base_Column_List"/> FROM employees where id = #{id} </select> <update id="update" parameterType="Employee"> Update employees set first_name=#{firstName}, last_name=#{lastName}, email_address=#{emailId} where id = #{id} </update> <delete id="deleteById" parameterType="long"> DELETE FROM employees WHERE id = #{id} </delete> <delete id="deleteAll"> DELETE FROM employees </delete>
</mapper>

Các method trong file sẽ map chính xác các method trong file *Mapper.java Ví dụ: findAll, findById, deleteById ...

@Mapper
public interface EmployeeMapper { List<Employee> findAll(); Employee findById(long id); // int deleteById(long id); int deleteAll(); // int insert(Employee employee); // int update(Employee employee);
}

Khi sử dụng chỉ cần khai báo file *Mapper.java như thông thường và thực hiện các thao tác với cơ sở dữ liệu.

 @Autowired EmployeeMapper employeeMapper; @Override public void run(String... args) { employeeMapper.deleteAll(); employeeMapper.insert(new Employee(10011L, "Ramesh", "Fadatare", "ramesh@gmail.com")); employeeMapper.insert(new Employee(10012L, "John", "Cena", "john@gmail.com")); employeeMapper.insert(new Employee(10013L, "tony", "stark", "stark@gmail.com")); logger.info("Employee id 10011 -> {}", employeeMapper.findById(10011L)); logger.info("Update 10003 -> {}", employeeMapper.update(new Employee(10011L, "ram", "Stark", "ramesh123@gmail.com"))); logger.info("Delete 10003 -> {}", employeeMapper.deleteById(10013L)); employeeMapper.findAll().forEach(System.out::println); employeeMapper.deleteAll(); } 

3. Kết Luận

Theo cá nhân mình thấy thì nó sử dụng cũng khá tiện, dễ ràng custom query. Cũng là 1 framework hay để học hỏi.

Link Sourcecode

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tổng hợp các bài hướng dẫn về Design Pattern - 23 mẫu cơ bản của GoF

Link bài viết gốc: https://gpcoder.com/4164-gioi-thieu-design-patterns/. Design Patterns là gì. Design Patterns không phải là ngôn ngữ cụ thể nào cả.

0 0 278

- vừa được xem lúc

Học Spring Boot bắt đầu từ đâu?

1. Giới thiệu Spring Boot. 1.1.

0 0 257

- vừa được xem lúc

Cần chuẩn bị gì để bắt đầu học Java

Cần chuẩn bị những gì để bắt đầu lập trình Java. 1.1. Cài JDK hay JRE.

0 0 37

- vừa được xem lúc

Sử dụng ModelMapper trong Spring Boot

Bài hôm nay sẽ là cách sử dụng thư viện ModelMapper để mapping qua lại giữa các object trong Spring nhé. Trang chủ của ModelMapper đây http://modelmapper.org/, đọc rất dễ hiểu dành cho các bạn muốn tìm hiểu sâu hơn. 1.

0 0 180

- vừa được xem lúc

[Java] 1 vài tip nhỏ khi sử dụng String hoặc Collection part 1

. Hello các bạn, hôm nay mình sẽ chia sẻ về mẹo check String null hay full space một cách tiện lợi. Mình sẽ sử dụng thư viện Lớp StringUtils download file jar để import vào thư viện tại (link).

0 0 55

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 124