MyBatis Tutorial: Part-2: CRUD operations Using Annotations
source link: https://www.sivalabs.in/2012/10/mybatis-tutorial-part-2-crud-operations-using-annotations/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
MyBatis Tutorial: Part-2: CRUD operations Using AnnotationsSkip to content
In this post I will explain how to perform CRUD operations using MyBatis Annotation support without need of Queries configuration in XML mapper files.
MyBatis Tutorial: Part1 – CRUD Operations
MyBatis Tutorial: Part-2: CRUD operations Using Annotations
MyBatis Tutorial: Part 3 – Mapping Relationships
MyBatis Tutorial : Part4 – Spring Integration
Step#1: Create a table BLOG and a java domain Object Blog.
CREATE TABLE blog
(
blog_id int(10) unsigned NOT NULL auto_increment,
blog_name varchar(45) NOT NULL,
created_on datetime NOT NULL,
PRIMARY KEY (blog_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
package com.sivalabs.mybatisdemo.domain;
import java.util.Date;
public class Blog
{
private Integer blogId;
private String blogName;
private Date createdOn;
//Seeters and getters
@Override
public String toString() {
return "Blog [blogId=" + blogId + ", blogName=" + blogName
+ ", createdOn=" + createdOn + "]";
}
}
Step#2: Create UserMapper.java interface with SQL queries in Annotations.
package com.sivalabs.mybatisdemo.mappers;
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.sivalabs.mybatisdemo.domain.Blog;
public interface BlogMapper
{
@Insert("INSERT INTO BLOG(BLOG_NAME, CREATED_ON)
VALUES(#{blogName}, #{createdOn})")
@Options(useGeneratedKeys=true, keyProperty="blogId")
public void insertBlog(Blog blog);
@Select("SELECT BLOG_ID AS blogId, BLOG_NAME as blogName,
CREATED_ON as createdOn FROM BLOG WHERE BLOG_ID=#{blogId}")
public Blog getBlogById(Integer blogId);
@Select("SELECT * FROM BLOG ")
@Results({
@Result(id=true, property="blogId", column="BLOG_ID"),
@Result(property="blogName", column="BLOG_NAME"),
@Result(property="createdOn", column="CREATED_ON")
})
public List<Blog> getAllBlogs();
@Update("UPDATE BLOG SET BLOG_NAME=#{blogName}, CREATED_ON=#{createdOn}
WHERE BLOG_ID=#{blogId}")
public void updateBlog(Blog blog);
@Delete("DELETE FROM BLOG WHERE BLOG_ID=#{blogId}")
public void deleteBlog(Integer blogId);
}
Step#3: Configure BlogMapper in mybatis-config.xml
<?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.sivalabs.mybatisdemo.mappers.BlogMapper"/>
</mappers>
</configuration>
Step#4: Create BlogService.java
package com.sivalabs.mybatisdemo.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.sivalabs.mybatisdemo.domain.Blog;
import com.sivalabs.mybatisdemo.mappers.BlogMapper;
public class BlogService
{
public void insertBlog(Blog blog)
{
SqlSession sqlSession = MyBatisUtil
.getSqlSessionFactory().openSession();
try{
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
blogMapper.insertBlog(blog);
sqlSession.commit();
}
finally {
sqlSession.close();
}
}
public Blog getBlogById(Integer blogId)
{
SqlSession sqlSession = MyBatisUtil
.getSqlSessionFactory().openSession();
try{
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
return blogMapper.getBlogById(blogId);
}
finally {
sqlSession.close();
}
}
public List<Blog> getAllBlogs()
{
SqlSession sqlSession = MyBatisUtil
.getSqlSessionFactory().openSession();
try {
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
return blogMapper.getAllBlogs();
}
finally {
sqlSession.close();
}
}
public void updateBlog(Blog blog) {
SqlSession sqlSession = MyBatisUtil
.getSqlSessionFactory().openSession();
try{
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
blogMapper.updateBlog(blog);
sqlSession.commit();
}
finally {
sqlSession.close();
}
}
public void deleteBlog(Integer blogId)
{
SqlSession sqlSession = MyBatisUtil
.getSqlSessionFactory().openSession();
try{
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
blogMapper.deleteBlog(blogId);
sqlSession.commit();
}
finally {
sqlSession.close();
}
}
}
Step#5: Create JUnit Test for BlogService methods
package com.sivalabs.mybatisdemo;
import java.util.Date;
import java.util.List;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.sivalabs.mybatisdemo.domain.Blog;
import com.sivalabs.mybatisdemo.service.BlogService;
public class BlogServiceTest
{
private static BlogService blogService;
@BeforeClass
public static void setup()
{
blogService = new BlogService();
}
@AfterClass
public static void teardown()
{
blogService = null;
}
@Test
public void testGetBlogById()
{
Blog blog = blogService.getBlogById(1);
Assert.assertNotNull(blog);
System.out.println(blog);
}
@Test
public void testGetAllBlogs()
{
List<Blog> blogs = blogService.getAllBlogs();
Assert.assertNotNull(blogs);
for (Blog blog : blogs)
{
System.out.println(blog);
}
}
@Test
public void testInsertBlog()
{
Blog blog = new Blog();
blog.setBlogName("test_blog_"+System.currentTimeMillis());
blog.setCreatedOn(new Date());
blogService.insertBlog(blog);
Assert.assertTrue(blog.getBlogId() != 0);
Blog createdBlog = blogService.getBlogById(blog.getBlogId());
Assert.assertNotNull(createdBlog);
Assert.assertEquals(blog.getBlogName(), createdBlog.getBlogName());
}
@Test
public void testUpdateBlog()
{
long timestamp = System.currentTimeMillis();
Blog blog = blogService.getBlogById(2);
blog.setBlogName("TestBlogName"+timestamp);
blogService.updateBlog(blog);
Blog updatedBlog = blogService.getBlogById(2);
Assert.assertEquals(blog.getBlogName(), updatedBlog.getBlogName());
}
@Test
public void testDeleteBlog()
{
Blog blog = blogService.getBlogById(4);
blogService.deleteBlog(blog.getBlogId());
Blog deletedBlog = blogService.getBlogById(4);
Assert.assertNull(deletedBlog);
}
}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK