SpringBoot 学习笔记

    技术2022-07-16  71

    SpringBoot 学习笔记_整合持久层——MyBatis

    声明:

    本次学习参考 《SpringBoot + Vue 开发实战》 · 王松(著) 一书。

    本文的目的是记录我学习的过程和遇到的一些问题以及解决办法,其内容主要来源于原书。

    如有侵权,请联系我删除

    文章目录

    SpringBoot 学习笔记_整合持久层——MyBatisSpringBoot 整合持久层开发整合 MyBatis整合 SpringDataJPA多数据源

    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

    多数据源

    Processed: 0.008, SQL: 9