作者:谭东
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
MyBatis 提供一种“半自动化”的ORM实现。这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。而MyBatis 的着力点,则在于POJO与SQL之间的映射关系。
先引入包,pom.xml引入:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
新建实体类MyBatis。
package com.tandong.testjavaweb.entity;
import java.util.Date;
public class MyBatis {
private int id;
private String name;
private long price;
private String description;
private Date date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getPrice() {
return price;
}
public void setPrice(long price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
创建Dao层,MyBatisMapper。
package com.tandong.testjavaweb.mapper;
import com.tandong.testjavaweb.entity.MyBatis;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.Date;
import java.util.List;
@Mapper
public interface MyBatisMapper {
@Select("SELECT * FROM mybatis WHERE id = #{id}")
MyBatis findById(@Param("id") Integer id);
@Select(value = "select * from mybatis")
List<MyBatis> getList();
@Insert(value = "insert into mybatis(name, description,price,date) values(#{name}, #{description}, #{price}, #{date})")
void addMyBatis(@Param("name") String name, @Param("description") String description, @Param("price") long price, @Param("date") Date date);
}
创建Service层,MyBatisService类。
package com.tandong.testjavaweb.service;
import com.tandong.testjavaweb.entity.MyBatis;
import com.tandong.testjavaweb.mapper.MyBatisMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MyBatisService {
@Autowired
private MyBatisMapper myBatisMapper;
public List<MyBatis> getMyBatisMapper() {
return myBatisMapper.getList();
}
public MyBatis getMyBatisByIdMapper(int id) {
return myBatisMapper.findById(id);
}
public void addMyBatisMapper(MyBatis myBatis) {
myBatisMapper.addMyBatis(myBatis.getName(), myBatis.getDescription(), myBatis.getPrice(), myBatis.getDate());
}
}
创建Controller层,MyBatisController类,构建Resful API。
package com.tandong.testjavaweb.controller;
import com.tandong.testjavaweb.entity.MyBatis;
import com.tandong.testjavaweb.service.MyBatisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
@RestController
@SpringBootApplication
@RequestMapping("/mybatis")
public class MyBatisController {
@Autowired
MyBatisService myBatisService;
@ResponseBody
@GetMapping(value = "/addMyBatisMapper")
public Object addMyBatisMapper() {
MyBatis myBatis = new MyBatis();
myBatis.setDate(new Date());
myBatis.setDescription("描述");
myBatis.setName("名字");
myBatis.setPrice(20);
myBatisService.addMyBatisMapper(myBatis);
return "插入成功";
}
@GetMapping(value = "/getListMapper")
public List<MyBatis> getListMapper() {
return myBatisService.getMyBatisMapper();
}
@GetMapping(value = "/mapper/{idMapper}")
public MyBatis getMyBatisByIdMapper(@PathVariable Integer idMapper) {
return myBatisService.getMyBatisByIdMapper(idMapper);
}
}
最后,编译运行即可。可以使用PostMan测试。
我这里使用浏览器访问。
访问:http://localhost:8082/mybatis/addMyBatisMapper 进行插入数据操作。
访问:http://localhost:8082/mybatis/getListMapper 获取数据库列表,返回的是JSON格式。
访问:http://localhost:8082/mybatis/mapper/2 后面的是id,可以获取对应id的Product信息。
注意,如果表没创建,那么会报错,需要提前把表建好。
完整项目Github地址:https://github.com/jaychou2012/Spring-Boot-Web
参考文献:
【1】mybatis-spring-boot-autoconfigure.http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
【2】MyBatis 3 | 简介.http://www.mybatis.org/mybatis-3/zh/index.html