- 導入依賴
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.22</version> </dependency>
- 創建數據庫訪問層(Mapper)
@Mapper public interface BookMapper { int addBook(Book book); int deleteBookById(Integer id); int updateBookById(Book book); Book getBookById(Integer id); List<Book> getAllBooks(); }
- 創建對應的Mapper.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.batac.summer.Mapper.BookMapper"> <insert id="addBook" parameterType="com.batac.summer.bean.Book"> insert into book (name, author) values (#{name},#{author}) </insert> <delete id="deleteBookById" parameterType="int"> delete from book where id=#{id} </delete> <update id="updateBookById" parameterType="com.batac.summer.bean.Book"> update book set name=#{name},author=#{author} where id=#{id} </update> <select id="getBookById" parameterType="int" resultType="com.batac.summer.bean.Book"> select * from book where id=#{id} </select> <select id="getAllBooks" resultType="com.batac.summer.bean.Book"> select * from book </select> </mapper>
- service與controller測試
@Service public class BookService { // @Autowired // BookDao bookDao; @Autowired private BookMapper bookMapper; public int addBoot(Book book){ return bookMapper.addBook(book); } public int updateBook(Book book){ return bookMapper.updateBookById(book); } public int deleteBookById(Integer id){ return bookMapper.deleteBookById(id); } public Book getBookByID(Integer id){ return bookMapper.getBookById(id); } public List<Book>getAllBooks(){ return bookMapper.getAllBooks(); } }
@RestController public class BookController { @Autowired BookService bookService; @GetMapping("/bookOps") public void bookOps(){ Book b1 = new Book(); b1.setName("西廂記"); b1.setAuthor("王師傅"); int i = bookService.addBoot(b1); System.out.println("addBoot>>>"+i); Book b2 = new Book(); b2.setId(1); b2.setName("朝花夕拾"); b2.setAuthor("魯迅"); int i2=bookService.updateBook(b2); System.out.println("updateBook>>>"+i2); Book b3=bookService.getBookByID(1); System.out.println("getBookByID>>>"+b3); List<Book>list = bookService.getAllBooks(); System.out.println("getAllBooks>>>"+list); } }
在Maven工程中, XML配置文件建議卸載resources目錄下, 但是上文中的Mapper.xml文件寫在了包下, Maven在運行時會忽略包下的XML文件, 因此需要在pom.xml文件中重新指明資源文件位置, 配置如下:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
注意: 有兩種方式指明該類是一個Mapper: 第一種是如前面的代碼所示, 在BookMapper上添加@Mapper註解, 表明該接口是一個MyBatis中的Mapper, 這種方式要在每一個Mapper上都添加註解, 還有一種簡單的方式是在配置類上添加MapperScan("com.batac.summer.mapper")註解, 表示掃描com.batac.summer.mapper包下所有的接口作爲Mapper, 這樣就不用在每個接口上配置@Mapper註解了。