day03笔记

对象的注入方式:1.构造注入     2.set注入  3.spring注入

set注入的两种方式:根据类型注入(默认)           根据方法名注入

1.spring整合Mybatis

1.1跳过测试类打包

1.1.1需求说明

说明:maven执行打包命令时,默认条件下,会执行测试类中的方法,并且这些方法都要执行。

隐患 可能某些测试方法由于种种原因,执行报错,则install的操作执行失败

矛盾点:项目打包与test类之间的问题

解决方法:要求install时 不要执行test方法,

 <properties>
        <java.version>1.8</java.version>
        <skipTests>true</skipTests>
    </properties>

 1.2SpringBoot整合Mybatis

1.2.1选择file -New Moudle -next

1.2.2编辑项目

1.2.3导入pom.xml 只导入<parent>后面的

1.2.4编辑主启动类

1.3.1连接数据库

 1.3.2导入数据库

右键选择执行sql脚本,导入执行语句的txt即可。

 1.4整合mybatis

1.4.1导入jar包

导入3个jar包

        <!--引入数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--springBoot数据库连接  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--spring整合mybatis  暂时  -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

1.4.2编辑YML文件

编辑   1.数据源   2.整合mybatis

1.4.3编辑映射文件

关键词: namespace  id  标签  别名   返回值类型 resultType  resultMap

基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,,这些全部都得一一对应)

高级映射 :(resultMap) 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现)

1.4.4编辑主启动类

关键词:mapper/dao (接口)      为接口创建对象!!!  Spring为接口创建的对象

序列化接口的作用:保证对象网络传输的有效性!

oracler中 ;必定报错, 不要加!

@Mapper注解 一般表示接口,如果有多个接口,则应该标识多次

优化:可以采用@MapperScan("")进行优化

2.1关于整合的问题

2.1.1关于映射文件位置的说明

如果xml的映射文件在根目录下(不建议),则加载时要采用classpath*:/*.xml的结构,强制加载根目录下的所有的xml文件。

2.1.2 idea关于mapper注入问题

通过包扫描的路径,在运行期间实现对象的创建,实现数据

 解决方式:

3. MybatisPlus学习

3.1 ORM思想

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。

总结:ORM以对象的方式操作数据库

知识升华:

  1.以对象的方式实现数据库CURD操作

  2.要求通过某种机制将对象动态的转换为sql,之后实现数据库操作(自己不写sql)

3.2 Mybatis 优点/缺点

优点:

    1.Mybatis内部整合了JDBC,简化了持久层开发。

    2.Mybatis可以自动的封装结果集的对象,满足ORM中的一个条件,所以可以将mybatis称之为半自动化的ORM映射框架。

    3.Mybatis有缓存机制,  一级缓存/二级缓存  提高用户的查询效率

    4.Mybatis支持多种类型的数据库,整合简单

缺点:

    1.实现数据的封装 resultMap 封装复杂!!!

    2.针对于单表的CRUD的操作 不够便捷  sql都需要手写!!!

    3.个别的情况下二级缓存配置不生效!!!

3.3 Mybatisplus介绍

    MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

   特性:

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

3.4 mp入门案例

3.4.1导入jar包

    <!--spring整合mybatis-plus 删除mybatis的包-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

3.4.2实现映射

关键词:对象 表  属性 字段  一一映射

 说明:

      1.对象名称与表名称一一对应

      2.对象属性名称与表字段名称一一对应

//1.将对象与表进行关联
/*规则1:如果表名与对象名一致,则名称可以省略不写*/
/*规则2:如果字段名与属性名一致,则注解可以省略不写*/
@TableName("demo_user")
//序列化接口作用:抱证对象网络传输的有效性!!
public class User implements Serializable{
    //主键自增/非空/唯一标识UUID 生成唯一编号
    @TableId(type = IdType.AUTO)  //id代表的是主键的意思
    private Integer id;
   // @TableField("name")  //标识属性与字段的映射
    private String name;
    private Integer age;
    private String sex;
}

3.4.3继承特定的接口

关键词:封装--多肽--继承

说明:MP在内部准备一个BaseMapper的接口  BaseMapper内部几乎将单表的CURD操作 都进行了编辑,用户自己的Mapper接口可以继承接口

编辑接口

/*
规则1:继承baseMapper时,必须添加泛型对象
规则2:自己的方法不要与接口方法重名   ---一定会报错
*/
public interface UserMapper extends BaseMapper<User> {
    
    //查询所有user的用户
    List <User> findAll();
}

3.4.4 编辑yml文件

说明:将yml文件中的mybatis改为mybatis-plus

mybatis-plus:

3.4.4 demo测试

注意:测试的包名要与写业务的包名保持一致,否则会报错

3.4.5 打印sql语句

在yml文件中加入以下代码

#打印sql语句  为 com.jt.mapper包下desql执行打印日志
logging:
  level:
    com.jt.maprrer: debug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值