0
点赞
收藏
分享

微信扫一扫

个人在线学习网站(第二章 后端架构完善与接口开发)

Sky飞羽 2022-01-31 阅读 39

集成持久层框架Mybatis

  1. 集成Mybatis
    引入依赖
            <!-- 集成mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.3</version>
            </dependency>
            <!-- 集成mysql连接 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>

    配置数据源
    # 增加数据库连接
    spring.datasource.url=jdbc:mysql://localhost:3306/xxx?serverTimezone=GMT%2B8
    spring.datasource.username=xxx
    spring.datasource.password=xxx
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

  2. 使用Mybatis
    配置mybatis所有Mapper.xml所在的路径
    mybatis.mapper-locations=classpath:/mapper/**/*.xml
    使用@MapperScan扫描所有的Mapper接口
    @MapperScan(“com.xxx.xxx.mapper”)
    接口和XML的命名
  3. 使用持久层
    创建service包,将mapper注入
    使用@Service或@RestController注解,将Service类或Controller类交给Spring来管理了
    使用@Resource(JDK自带)或@Autowire(spring的)将一个类注入到另一个类中

集成Mybatis官方代码生成器

增加插件依赖
 

<!-- mybatis generator 自动生成代码插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <configurationFile>src/main/resources/generator/generator-config.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.22</version>
                    </dependency>
                </dependencies>
            </plugin>


增加配置文件generator-config.xml
增加执行命令

后端接口统一返回参数,方便前端统一处理
CommonResp

封装请求参数和返回参数

将所有查询参数封装成一个类EbookReq,与Ebook表类似

将所有返回参数封装成一个类EbookResp,与Ebook表类似
现在返回参数是CommonResp<List<ebook>>ebook,但是有时候返回值并不是跟ebook一一对应(比如密码一般不会直接返回给前端,所以跟数据库并不是一一对应的) 正常情况,没有特殊字段就是一一对应的。

持久层返回List<Ebook>需要转成List<EbookResp>,再返回controller

常见面试题汇总

1、常见的持久层框架有哪些?

主要有Mybatis、Hibernate两种持久层框架,前者为半自动,后者为全自动

2、什么是半自动?什么是全自动?

半自动的持久层框架有时需要程序员手写一些SQL语句,灵活性高,比如Mybatis。

全自动的持久层框架不需要程序员手写SQL语句,几乎所有的事情都可以交给框架来做,非常省心省事

3、Mybatis和Hibernate有什么区别?

Mybatis:需要程序员手写SQL语句,可以严格控制sql执行性能,灵活度高。但是数据无关性差,如果是多种数据库的话,每种数据库都要编写专门的SQL语句,非常麻烦。

Hibernate:不需要程序员手写SQL语句,数据无关性好,可以适应多数据库类型的项目,但是比起Mybatis执行性能会差一些。

4、泛型和Object有什么区别?

泛型和Object在使用上区别不大,但是泛型在使用时不需要做强制类型转换,编译时更安全。如果使用Object类的话,你没法保证返回的类型一定是需要的类型,也许是其它类型。这时你就会在运行时得到一个类型转换异常(ClassCastException)

5、你做过的项目中,有没有用过泛型,怎么使用的?

CommonResp<List> resp = new CommonResp<>();

泛型可以在使用时才指定具体的数据类型,非常方便

举报

相关推荐

0 条评论