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知识库 -> Spring-mybatis-plus 整合spring -> 正文阅读

[Java知识库]Spring-mybatis-plus 整合spring

一.基本介绍

1.官网?http://mp.baomidou.com? ? ? 最新版本:3.1.1

2.特点:无侵入,提供CURD操作,支持主流数据库,有点很多? 不多细说

3.架构原理

mybatisplus通过反射扫描实体类,然后获取数据库中的表格信息,通过分析产生crud的sql语句,然后把sql语句封装到容器中

二.工程搭建

1.依赖导入,主要是mybatis-plus

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.heima</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
    </dependencies>

</project>

3.配置资源建立

?1)在resources文件下创建logj的配置文件? log4j.properties

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p]  %m%n

? ?2)mybatis-config配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;allowMultiQueries=true&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

三.项目开发

1.接口实现,extends BaseMapper

package cn.itcast.mp.simple.mapper;

import cn.itcast.mp.simple.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;

public interface UserMapper extends BaseMapper<User> {

    List<User> findAll();
}

2.创建映射文件.xml?

注意有一个resultType

<?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="cn.itcast.mp.simple.mapper.UserMapper">

    <select id="findAll" resultType="cn.itcast.mp.simple.pojo.User">
        select * from tb_user
    </select>

</mapper>

?3.创建测试类开启测试(先Resources->SqlSessionFactory->sqlsession->mapper->调用方法)

? ?流程:1).将mybatis配置文件定义为一个字符串config

? ? ? ? ? ? ? ? ? String config="mybatis-config.xml"

? ? ? ? ? ? ? 2).用Resources.getResourceAsStream 方法加载config,得到一个输入流

? ? ? ? ? ? ? ? ?InputStream inputStream=?Resources.getResourceAsStream(config)

? ? ? ? ? ? ? 3).通过sqlSessionFactoryBuilder建立一个sqlSessionFactory??

? ? ? ? ? ? ? ? SqlSessionFactory ?sqlSessionfactory=? sqlSessionFactoryBuilder.build(inputStream)

? ? ? ? ? ? ? 4).通过sqlSessionfactory创建一个sqlsession

? ? ? ? ? ? ? ? ? ? ?sqlSessionfactory.openSession()

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ?5).sqlsession加载已创建的mapper文件,创建一个mapper对象?

? ? ? ? ? ? ? ? ? ? ? sqlsession.getMapper("UserMapper.xml").var

? ? ? ? ? ? ? ? 6).通过mapper文件调用定义的方法,进行增删改查

? ? ? ? ? ? ? ? ? ? ? ?usermapper.findAll();

? ? ? ??

package cn.itcast.mp.simple;

import cn.itcast.mp.simple.mapper.UserMapper;
import cn.itcast.mp.simple.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

public class TestMybatis {

    @Test
    public void testFindAll() throws Exception{

        String config = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(config);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //测试查询
        List<User> users = userMapper.findAll();
        for (User user : users) {
            System.out.println(user);
        }

    }
}

4.使用mybatis-plus实现查找user

? ?1)将usermapper的接口集成BaseMapper

? ?2)在实体类上用@TableName("tb_user")映射到数据库

? ?3)在创建session的过程中使用MybatisSqlSessionBuilder

5.springboot 整合mybatis-plus

?1)导入依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 <!--简化代码的工具包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--mybatis-plus的springboot支持-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>

    </dependencies>

2)编写配置文件

application.yml配置文件

spring:
  datasource:
      driver-class-name: com.mysql.jdbc.Driver
      username: root
      password: 123456
      url: jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf8&useSSL=false
      max-active: 60 #连接池配置

  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: Asia/Chongqing
#配置mybatis-plus
mybatis-plus:
  #指定全局mybatis配置文件
  classpath: mybatis-config.xml
  configuration:
    #驼峰映射
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #输出sql语句

    #指定sqlmapper文件所在位置  即在mapper文件夹下的.xml文件
  mapper-locations: classpath*:/mapper/**/*.xml
  #别名扫描,指定sql mapper文件中resultType的路径
  type-aliases-package: com.qf


  global-config:
    db-config:
      #将主键设置为自动增长,这样就省区了entity中的 @TableId(type = IdType.AUTO)
      id-type: auto
      #将所有实体类对数据库的映射表名前缀设置为tb_,这样就可以在实体类上取消@TableName("tb_user")
      table-prefix: tb_

3)创建启动类App@SpringBootApplication

@SpringBootApplication
@MapperScan("com.qf.mapper")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

4)开启测试类

注意加两个注释:@RunWith(SpringJUnit4ClassRunner.class)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?@SpringBootTest

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMybatisSpringBoot {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testSelectList(){
        List<User> users = this.userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }

}

四.数据匹配要点

1.@TableName

当实体类类名和数据库表明对应不上时,应该在类名上加上@TableName

2.@TableId

对于主键,应该在其属性名上加上@TableId(type=Idtype.AUTO)

3.@TableField

数据库中一个属性是email,对象属性是mail,那么就可以加上TableField(value="email")

还有一种情况 :比如数据库中没有address这个属性,那么可以在对象属性上加上@TableField(exist=false)

@TableField(select=false).隐藏查找后的属性

4.mybatis封装crud,用wrapper封装条件信息

Querywrapper的使用,eq代表等于,gt大于等于 ,wrapper.eq("name","小李"),代表封装一个条件,数据库中字段是name的是小李,然后调用查询语句,放入条件即可

    @Test
    public  void test2(){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.gt("age", 18);//封装查询条件
        List<User> users = userMapper.selectList(queryWrapper);
        for (User u:users) {
            System.out.println(u);
        }

    }

5.测试分页查询

1)第一步,建立mybatisplus配置类,创建分页插件?

2)分页查询

 @Test
    public  void testPage(){
        //设置查询哪页的多少行信息
        Page<User> page=new Page<>(1,1);

        //设置查询的条件
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.like("user_name","zh");

        //开启查询
        IPage<User> userIPage = userMapper.selectPage(page, queryWrapper);
        List<User> records = userIPage.getRecords();
        for (User u:records
             ) {
            System.out.println(u);
        }


    }

五.mybatis配置详解

1.如果自己另外设置有mybaits配置信息,那么可以在application.yml文件中进行指定

2.高级mybatis配置

2.1驼峰映射:在查找数据时如果存在数据为null,可能就是驼峰映射没打开,比如User的属性userName,在数据库中是username,这时候打开驼峰映射就可以查询到信息了

2.2 cache_enable:配置二级缓存

?2.3表明前缀设置table_prefix

global-config:
  db-config:
    #将主键设置为自动增长,这样就省区了entity中的 @TableId(type = IdType.AUTO)
    id-type: auto
    #将所有实体类对数据库的映射表名前缀设置为tb_,这样就可以在实体类上取消@TableName("tb_user")
    table-prefix: tb_

六.数据操作涉及到的知识点

1.大小比较汇总

eq:等于

ne:不等于

gt:大于

ge:大于等于

lt:小于

lq:小于等于

2.排序算法:利用queryWrapper,orderbyDesc是倒序,将倒序条件设置进queryWrapper,

3.逻辑查询:? wrapper设置查询条件可以设置.or()来增加条件,如果不加or(),两个条件就是and? 并?列条件

 @Test
    public  void  test6(){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.orderByDesc("age");
        List<User> users = userMapper.selectList(queryWrapper);
        for (User u:  users
             ) {
            System.out.println(u);

        }
    }

4.选择查询,wrapper设置的查询条件可以在后面加上select 可以选择自定义的查询字段


    @Test
    public  void tset6(){
      QueryWrapper<User> queryWrapper=new QueryWrapper<>();
      queryWrapper.eq("name","张三").or().eq("age",28).select("user_name","name","age");
        List<User> users = userMapper.selectList(queryWrapper);
        for (User u: users ) {
            System.out.println(u);
        }
    }

七.AR操作? ActiveRecord

1.在实体类上继承Model

2.Active Record实现增删改查

首先new 一个User,设置对应属性 然后通过User对象去调用增删改查方法

package com.qf;

import com.qf.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
public class TestAr {
    @Test
    public  void test1(){
        User user=new User();
        user.setId(2L);
        User user1=user.selectById();
        System.out.println(user1);
    }
    @Test
    public  void  test2(){
        User user=new User();
        user.setUserName("王宝强");
        user.setMail("baoqiang@qq.com");
        boolean insert = user.insert();
        System.out.println("插入了吗?"+insert);
    }
    @Test
    public  void  test3(){
        User user=new User();
        user.setId(2L);
        user.setAge(100);
        boolean b = user.updateById();
        System.out.println(b);

    }
    @Test
    public  void  test4(){
        User user=new User();
        user.setId(2L);
        User user1 = user.selectById();
        System.out.println(user1);
    }

}

八.mybatis-plus插件

1.代码生成器

目录

一.基本介绍

二.工程搭建

三.项目开发

四.数据匹配要点

五.mybatis配置详解

六.数据操作涉及到的知识点


  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:07:52  更:2022-07-17 16:11:54 
 
开发: 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 15:41:32-

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