Mybatis整合MP

news2025/1/12 23:15:02

Mybatis整合MP

案例准备:

创建测试表:

-- 创建测试表
CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_name` varchar(20) NOT NULL COMMENT '用户名',
  `password` varchar(20) NOT NULL COMMENT '密码',
  `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- 插入测试数据
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES 
('1', 'zhangsan', '123456', '张三', '18', 'test1@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES 
('2', 'lisi', '123456', '李四', '20', 'test2@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES 
('3', 'wangwu', '123456', '王五', '28', 'test3@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES 
('4', 'zhaoliu', '123456', '赵六', '21', 'test4@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES 
('5', 'sunqi', '123456', '孙七', '24', 'test5@itcast.cn');

在这里插入图片描述


Mybatis+MP

第一步:创建一个maven工程 ,导入坐标;

	<build>
        <!--设置jdk版本-->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <!-- mybatis-plus插件依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</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>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.11</version>
        </dependency>
        <!--简化bean代码的工具包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

第二步:在resource文件中创建log4j.properties、jdbc.properties、mybatis-config.xml等配置文件

log4j文件:

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

jdbc文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mp?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;allowMultiQueries=true&amp;useSSL=false
jdbc.username=root
jdbc.password=sa123

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>
    <!--引入properties文件,此时就可以${属性名}的方式访问属性值-->
    <properties resource="jdbc.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

第三步:创建User实体类对象;(这里使用lombok进行了进化bean操作)

package pojo;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor//创建无参构造函数
@AllArgsConstructor//创建所有参数的构造函数
@TableName("tb_user")
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

第四步:编写UserMapper接口

package Mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import pojo.User;

import java.util.List;

public interface UserMapper extends BaseMapper<User> {
    List<User> findAll();
}

第五步:配置UserMapper配置文件

<?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="Mapper.UserMapper">
    <select id="findAll" resultType="pojo.User">
        select * from tb_user
    </select>
</mapper>

第六步:在测试文件中测试

import Mapper.UserMapper;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
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 pojo.User;

import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MPtest {
    //使用mybatis自定义方法查询tb_user所有的数据
    @Test
    public void test() throws IOException {
        String resouce="mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resouce);
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = build.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> all = mapper.findAll();
        for(User user:all){
            System.out.println(user);
        }
    }
    //使用Mybatis+MP技术查询所有数据
    @Test
    public void  mptest() throws IOException {
        String resouce="mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resouce);
        SqlSessionFactory build = new MybatisSqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = build.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> all = mapper.selectList(null);
        for(User user:all){
            System.out.println(user);
        }
    }
}

test测试控制台打印:

执行语句:select * from tb_user

[main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 1427651360.
[main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@55183b20]
[main] [Mapper.UserMapper.findAll]-[DEBUG] ==>  Preparing: select * from tb_user 
[main] [Mapper.UserMapper.findAll]-[DEBUG] ==> Parameters: 
[main] [Mapper.UserMapper.findAll]-[DEBUG] <==      Total: 6
User(id=1, userName=null, password=123456, name=张三, age=18, email=test1@itcast.cn)
User(id=2, userName=null, password=123456, name=李四, age=20, email=test2@itcast.cn)
User(id=3, userName=null, password=123456, name=王五, age=28, email=test3@itcast.cn)
User(id=4, userName=null, password=123456, name=赵六, age=21, email=test4@itcast.cn)
User(id=5, userName=null, password=123456, name=孙七, age=24, email=test5@itcast.cn)
User(id=9, userName=null, password=123456, name=刘备, age=30, email=liubei@itcast.cn)

mptest测试控制台打印:

执行语句:SELECT id,user_name,password,name,age,email FROM tb_user

[main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 1661406123.
[main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@63070bab]
[main] [Mapper.UserMapper.selectList]-[DEBUG] ==>  Preparing: SELECT id,user_name,password,name,age,email FROM tb_user 
[main] [Mapper.UserMapper.selectList]-[DEBUG] ==> Parameters: 
[main] [Mapper.UserMapper.selectList]-[DEBUG] <==      Total: 6
User(id=1, userName=zhangsan, password=123456, name=张三, age=18, email=test1@itcast.cn)
User(id=2, userName=lisi, password=123456, name=李四, age=20, email=test2@itcast.cn)
User(id=3, userName=wangwu, password=123456, name=王五, age=28, email=test3@itcast.cn)
User(id=4, userName=zhaoliu, password=123456, name=赵六, age=21, email=test4@itcast.cn)
User(id=5, userName=sunqi, password=123456, name=孙七, age=24, email=test5@itcast.cn)
User(id=9, userName=liubei, password=123456, name=刘备, age=30, email=liubei@itcast.cn)

都查询出了所有的数据


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

在上面案例可以知道,MyBatis的dao接口继承BaseMapper接口就可以MyBatisPlus了,可以自定义方法,也可以使用

Mybatis-Plus 在 MyBatis 之上套了一层外衣,单表 CURD 的操作几乎都可以由 MyBatis-Plus 代替执行。而且提供了各种查询方式,分页行为。作为使用者无需编写 xml,直接调用 MyBatis-Plus 提供的 API 就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kafka性能指南

kafka性能指南 1.绪论 首先是epoll模型&#xff0c;epoll使其在框架上得以使用mmp和回写高性能。 epoll模型具体可以看linuxIO那一个笔记&#xff0c;这里简单讲一下 首先是epoll模型&#xff0c;模型要求有一组fd由单独线程监控&#xff0c;然后app去干别的事&#xff0c;当…

Arduino开发实例-MAX30100 脉搏血氧仪传感器驱动

MAX30100 脉搏血氧仪传感器驱动 1、MAX30100介绍 MAX30100 脉搏血氧仪和心率传感器是一款基于 I2C 的低功耗即插即用生物识别传感器。 MAX30100 是一款集成脉搏血氧饱和度和心率监测传感器解决方案。 它结合了两个 LED、一个光电探测器、优化的光学器件和低噪声模拟信号处理,…

【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 2 期 | 精品题解

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ 蓝桥杯专栏&#xff1a;蓝桥杯题解/感悟 &#x1f5a5;️ TS知识总结&#xff1a;十万字TS知识点总结 &#x1f449; 你的一键三连是我更新的最大动力❤️&#xff01; &…

降本增效利器?Share Creators智能数字资产管理系统真香!

降本增效似乎是一个持续又永久的话题。尤其在今年&#xff0c; 显得格外的重要~ 疫情不知不觉已经伴随了我们三年&#xff0c;在各行各业都受到了疫情所带来巨大冲击的背景下&#xff0c;降本增效对很多企业来说不再是锦上添花&#xff0c;而可能是一条唯一的出路。 随着市场…

荧光素PEG活性酯,FITC-PEG-NHS,FITC-PEG-SCM,荧光素聚乙二醇琥珀酰亚胺乙酸酯

中文名称&#xff1a;荧光素聚乙二醇琥珀酰亚胺乙酸酯 英文名称&#xff1a;FITC-PEG-NHS,FITC-PEG-SCM 分子量&#xff1a; 1K,2K,3.4K,5K,10K(黄色、橙黄色或者橘黄色固体或者粉末) 端基取代率&#xff1a;≥90% 原料分散系数PDI&#xff1a;≤1.05 纯度&#xff1a;98%…

Vue简单示例——weex跨平台解决方案

简单介绍&#xff1a; Weex的出现主要解决了Web开发的应用频繁发布版本和多端研发两个问题&#xff0c;同时解决了前端语言性能差异和显示效果受限的问题。 什么是weex&#xff1a; Weex是使用流行的Web开发体验来开发高性能原生应用框架。使开发者可以用JS语言和前端开发经…

若依框架解读(微服务版)—— 3.验证码与登录

验证码 查看验证码的请求&#xff1a; 之前已经讲过http://localhost/dev-api/code会在前端重写为http://localhost:8080/code。 请求第一步会进入网关模块 网关相关知识&#xff1a;Gateway基于的WebFlux框架&#xff0c;与我们平时用的WebMVC是不太一样的。网关由Route&#…

PHP的Exception

# 简单解释 Exception是PHP的内置类&#xff0c;用来处理异常的基类 https://www.php.net/manual/zh/class.exception.php php class Exception implements Throwable { /** The error message */ protected $message; /** The error code */ protect…

MVC升级swagger No operations defined in spec!

不要嘲笑农民工种田怎么不香了&#xff0c;要反思为什么别人种田收入高。 以下是农民工即将转行挖野菜之前的种田心得。 &#xff11;No operations defined in spec! &#xff12;Failed to load API definition. Failed to load API definition. 经过多次试验测试&#xff0…

光盘如何重装系统教程

​如果你想用光盘来重装自己的电脑系统&#xff0c;但是不知道怎么操作的话&#xff0c;下面让我们一起来看一下光盘重装系统的步骤吧。 工具/原料&#xff1a; 系统版本&#xff1a;win7 品牌型号&#xff1a;惠普 光盘重装系统&#xff1a; 1.首先我们需要先打开电脑上的光…

VUE 的生命周期

Vue 实例有一个完整的生命周期&#xff0c;也就是从创建之前→创建完成→挂载之前→挂载完成→更新渲染之前→渲染完成→销毁之前→销毁完成等一系列过程&#xff0c;我们称这是 Vue 的生命周期。通俗说就是 Vue 实例从创建到销毁的过程&#xff0c;就是生命周期。每一个组件或…

22.11.20补卡 javaSE多线程学习笔记

自用 并发编程 多个任务同时执行 并发原理: CPU分时间片交替执行, 宏观并行, 微观串行; 由OS调度 进程: OS中并发的一个任务 线程: 在一个进程中,并发的一个顺序执行流程 每当执行新的进程时, 之前的进程都会暂且暂停, 由于cpu的时间片非常短, 人感觉不出来 线程的三个要素: CP…

RemObjects SDK for Delphi

RemObjects SDK for Delphi RemObjects SDK for Delphi是一个高级远程处理框架&#xff0c;它允许您从局域网内或Internet上的客户端远程访问驻留在服务器上的对象。RemObjects SDK for Delphi将允许您构建客户端和服务器应用程序&#xff0c;使用高度优化的Smart Services实现…

Seata AT模式下的源码解析(三)

7. 网络请求 7.1 TransactionManager 事务管理器&#xff0c;在客户端主要用于发起事务请求、提交事务、回滚事务请求等&#xff0c;用于跟 TC 进行通信的类&#xff0c;其中获取当前接口的实现类是通过 TransactionManagerHolder 进行获取&#xff0c;然后通过 SPI 接口获取…

【没用的小知识又增加了--电机】

一些乱七八糟的笔记.. 怎么计算电流环带宽 https://www.csdn.net/tags/MtTaMgysMTgwMTQwLWJsb2cO0O0O.html 理解电机控制系统中的带宽问题 - 知乎 电机控制电路程序带宽和硬件带宽的关系&#xff0c;应该如何设计相关参数&#xff1f; - 知乎 怎么理解Clarke和park变换&am…

[附源码]java毕业设计西柚网购物系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

论文阅读【5】Attention Is All You Need

1.概述 1.1 论文相关 题目&#xff1a;注意你所有需要的&#xff08;Attention Is All You Need&#xff09;发表时间&#xff1a;2017出版&#xff1a;NIPS原文地址&#xff1a;经典模型了&#xff0c;网上一搜就能搜索到代码&#xff1a; 1.2 动机 因为循环神经网络通常是…

Poison Ink: Robust and Invisible Backdoor Attack 论文笔记

1. 论文信息 论文名称Poison Ink: Robust and Invisible Backdoor Attack作者Jie Zhang&#xff08;中国科学技术大学&#xff09;会议/出版社IEEE Transactions on Image Processingpdf&#x1f4c4;在线pdf 2. introduction 文章提出了一种新的攻击方式称为“Poison Ink”…

CRF条件随机场

文章目录定义转移概率 & 发射概率损失函数单条路径的求解viterbi解码贪婪算法维特比算法参考解读定义 CRF&#xff1a;condition random field 解决序列预测问题。比如TTS的前端分词&#xff0c;实体命名识别等。 转移概率 & 发射概率 发射分数&#xff1a;将输入预测…

PPT 最后一页写什么结束语既得体又能瞬间提升格调?

谢邀&#xff01;我只分享一个现下最流行的方法&#xff0c;绝对让尾页逼格满满&#xff01;罗永浩雷军都在用的「金句法」。 提到这份方法&#xff0c;你可能会觉得很陌生&#xff0c;但你一定见过这样的页面&#xff1a; 这样的页面还有很多&#xff0c;多是以一句话收尾&…