SpringBoot 學習筆記_整合持久層——MyBatis

SpringBoot 學習筆記_整合持久層——MyBatis

聲明:

本次學習參考 《SpringBoot + Vue 開發實戰》 · 王松(著) 一書。

本文的目的是記錄我學習的過程和遇到的一些問題以及解決辦法,其內容主要來源於原書。

如有侵權,請聯繫我刪除

SpringBoot 整合持久層開發

整合 MyBatis

MyBatic 是一款優秀的持久層框架。 幾乎避免了所有的 JDBC 代碼手動設置參數以及獲取結果集。

  • 創建數據庫和表

  • 創建 SpringBoot 項目,添加依賴

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.9</version>
    </dependency>
    
  • 數據庫配置(application.properties)

  • 創建實體類

  • 創建數據庫訪問層

    @Repository
    @Mapper
    public interface BooksMapper {
        int addBook(Books book);
        int deleteBookById(Integer id);
        int updateBookById(Books book);
        Books getBookById(Integer id);
        List<Books> getAllBooks();
    }
    

    有兩種方法指明該類是一個 Mapper:

    • xxxMapper 類上添加 @Mapper 註解,表明該接口是一個 MyBatis 中的 Mapper
    • 在配置類上添加 @MapperScan("org.sang.mapper") 註解,表示掃描 org.sang.mapper 包下的所有接口作爲 Mapper
    如果遇到:`Could not autowire. No beans of 'xxxx' type found`

    在 Mapper 上加上 @Repository 註解即可

  • 創建 BookMapper.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="org.sang.mapper.BooksMapper">
        <insert id="addBook" parameterType="org.sang.bean.Books">
            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="org.sang.bean.Books">
            UPDATE book SET name=#{name}, author=#{author} WHERE id=#{id}
        </update>
    
        <select id="getBookById" parameterType="int" resultType="org.sang.bean.Books">
            SELECT * FROM book WHERE id=#{id}
        </select>
    
        <select id="getAllBooks" resultType="org.sang.bean.Books">
            SELECT * FROM book
        </select>
    </mapper>
    
  • 創建 Service 和 Controller

    @Service
    public class BooksService1 {
        @Autowired
        BooksMapper booksMapper;
    
        public int addBook(Books book){
            return booksMapper.addBook(book);
        }
    
        public int updateBook(Books book){
            return booksMapper.updateBookById(book);
        }
    
        public int deleteBookById(Integer id ){
            return  booksMapper.deleteBookById(id);
        }
    
        public Books getBookById(Integer id){
            return booksMapper.getBookById(id);
        }
    
        public List<Books> getAllBooks(){
            return booksMapper.getAllBooks();
        }
    }
    
  • 配置 pox.xml 文件

    <build>
        <!-- 整合 MyMyBatis 配置 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>
    

整合 SpringDataJPA

多數據源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章