IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MyBatis-Plus框架(8月2号) -> 正文阅读

[Java知识库]MyBatis-Plus框架(8月2号)

持久层

操作数据存储的层

与什么数据库无关

与什么技术无关

ORM

O(Object)R(Relationship)M(Mapping)对象关系映射

MyBatis框架是一款持久层的ORM框架

MyBatis与JDBC的关系

Mybatis的底层是JDBC,基于反射技术在运行时调用JDBC,实现数据库编程

苞米豆(baomidou)

MyBatis-PlusMyBatis-Plus 官方文档https://baomidou.com/

Mybits-Plus与SpringBoot的关系

Mybatis-Plus框架能够与Spring框架无缝整合

学习一门框架

1、搭建环境

? ? ? ? (1)安装哪些依赖(三方库)

? ? ? ? 1、创建项目时选择这三个依赖

? ? ? ? 2、添加JSP依赖

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
            <scope>provided</scope>
        </dependency>

? ? ? ? (2)需要哪些配置

? ? ? ? 3、配置maven打包web目录(写在pom.xml的build标签中,把plugins折叠起来,写在plugins后面)?

        <resources>
            <resource>
                <directory>src/main/web</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>

? ? ? ? 4、配置jsp文件的前缀和后缀(写在resources/application.properties配置文件中)

spring.mvc.view.prefix=/jsp/
spring.mvc.view.suffix=.jsp

? ? ? ? 5、对application.properties文件进行修改(Mybatis-Plus基础配置参数)

? ? ? ? (3)框架提供了哪些API,怎么用

2、如何应用

3、研究它的底层

Mybatis-Plus替代了原生的JDBC

代码写在工程的哪个包里面

dao包:用原生的jdbc写,包名就叫dao

mapper包:用mybatis-plus框架写,包名建议叫mapper(模块子包,小于等于启动类)

在mapper子包中定义接口

在xml文件中编写SQL语句

? ? ? ? xml文件写在resources目录中

?

?设置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">

????????xml文件格式

SQL语句写在mapper标签里面

?

下载MybatisX,设置mapper和xml建立关系

? ? ? ? 在Idea的插件市场搜索并安装MybatisX插件

? ? ? ? ? ? ? ? 实现接口与xml绑定后快速访问

? ? ? ? ? ? ? ? 检查接口中的抽象方法在绑定xml文件中是否有对应标签绑定

? ? ? ? File->Settings->Plugins->MarketPlace

在启动类中实现@MapperScan("mapper包的全路径")注解

如何拿到框架创建的Mapper接口的实现类?

拿不到(因为没有物理文件,它存在于JVM内存中

如何拿到框架创建的Mapper接口的实现类的对象?

?框架说:实现类你拿不到的,对象我帮你创建好放在内存中,你直接拿对象

public class UserMapperImpl implements UserMapper{

? ? ? ? @Override

? ? ? ? public int insert(User user) throws Exception{

? ? ? ? 根据接口的绑定关系寻址xml文件

? ? ? ? 根据方法的绑定关系寻址绑定的SQL语句????????

? ? ? ? 获取连接

? ? ? ? 预编译SQL

? ? ? ? 填充参数

? ? ? ? 执行SQL

????????}

}

UserMapper userMapper=new UserMapperImpl();

?

不需要在启动类中写代码,在test里写

?需要打印SQL语句,可以在application.properties配置文件中添加

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

修改数据库的SQL语句

?Mybatis写SQL语句的几种方式

1、在绑定xml文件中写

? ? ? ? <insert></insert>

?? ? ? ? <update></update>

? ? ? ? <delete></delte>

? ? ? ? <selectt></select>

2、不需要xml文件,使用注解写

? ? ? ? @Insert

? ? ? ? @Delete

? ? ? ? @Update

? ? ? ? @Select

动态SQL语句还是在xml文件中写比较方便

3、不绑定xml文件,继承官方的BaseMapper接口

? ? ? ? 实体类中需要写的:

? ? ? ? @TableName("映射表名")? ? ? ? -->写在实体类的类名上一行

? ? ? ? @TableField("映射字段名")? ? ? ? -->写在实体类和父类的每一个字段名的上一行

? ? ? ? @TableId(value="映射主键名",type=IdType.AUTO)? ? ? ? -->写在父类的主键名的上一行

?

BaseMapper的17种SQL语句

public interface BaseMapper<T> extends Mapper<T> {
//1、未写的字段在SQL语句中默认为空
    int insert(T entity);

//2、serializable是接口,根据id删除
    int deleteById(Serializable id);

//3、根据任意条件删除,传一个hashmap给deleteByMap,将参数作为hashmap的key
//HashMap<String,Object> map=new HashMap();
//map.put("mobile","12525536433");
//--底层是where mobile='12525536433'
    int deleteByMap(@Param("cm") Map<String, Object> columnMap);

//4、略过
    int delete(@Param("ew") Wrapper<T> queryWrapper);

//5、根据id删除
//传一个Arraylist给deleteBatchIds方法
//List<Integer> idList=new ArrayList();
//idList.add(10);
//idList.add(11);
//底层是where id in(10,11)
    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

//只有语句为null的才不会出现在SQL语句中
    int updateById(@Param("et") T entity);

//略过
    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

//根据id查询一条完整的数据
    T selectById(Serializable id);

//根据一个ArrayList的id批量查询数据
//传一个Arraylist给deleteBatchIds方法
//List<Integer> idList=new ArrayList();
//idList.add(10);
//idList.add(11);
//底层是where id in(10,11)
//返回一个list
    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

//根据hashmap来查,我们传一个hashmap给selectByMap,它根据我们给的hashmap作为条件查
    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

//
    T selectOne(@Param("ew") Wrapper<T> queryWrapper);
//
    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

//
    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
//
    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
//
    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
//
    <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);
//
    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
}

Wrapper SQL子句构造器父类

? ? ? ? 1、QueryWrapper<T> 作为where条件的构造器

? ? ? ? 2、UpdateWrapper<T> 作为set子句的构造器

? ? ? ? IPage分页器

? ? ? ? 1、Page类

? ? ? ? 不同数据库的分页语句不一样,你需要告诉框架你用的是什么数据库

? ? ? ? MySQL:limit ?,?

? ? ? ? Oracle:基于rownum做子查询?

? ? ? ? 在启动类中添加下面的方法,即可告诉mybatis,我们使用的是MySQL数据库

@Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }

安装lombok依赖(安装依赖后,我们不需要在实体类中手写getter、setter、toString方法),它自己会帮我们写

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:29:56  更:2022-08-06 10:33:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:05:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码