开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情
创建数据库以及表
对于Mybatis整合MP通常用三种用法,分别是
1 Mybatis+MP
2 Spring+Mybatis+MP
3 SpringBoot+Mybatis+MP
创建数据库
创建表插入数据
/*
Navicat Premium Data Transfer
Source Server : 本地库
Source Server Type : MySQL
Source Server Version : 80017
Source Host : localhost:3306
Source Schema : mp
Target Server Type : MySQL
Target Server Version : 80017
File Encoding : 65001
Date: 23/08/2022 22:19:37
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',
`password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES (1, 'zhangsan', '123456', '张三', 18, 'test1@qq.com');
INSERT INTO `tb_user` VALUES (2, 'lisi', '123456', '李四', 20, 'test2@qq.com');
INSERT INTO `tb_user` VALUES (3, 'wangwu', '123456', '王五', 22, 'test3@qq,com');
INSERT INTO `tb_user` VALUES (4, 'zhaoliu', '123456', '赵六', 24, 'test4@qq.com');
SET FOREIGN_KEY_CHECKS = 1;
也可以复制官网上的,官网给出了demo,我自行进行了修改
保证有数据即可
接下来我们就通过这个数据库和表进行MP的学习
创建项目
创建Maven项目即可
引入依赖
< ? 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 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>MybatisPlus01</artifactId>
<version>1.0-SNAPSHOT</version>
<name>MybatisPlus01</name>
<dependencies>
<! --MybatisPlus插件依赖-->
<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>8.0.28</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>
<optional>true</optional>
<version>1.18.24</version>
</dependency>
<! --junit单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<! --sl4f日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
</project>
Mybatis+MP Mybatis实现findAll()方法
下面演示,通过纯Mybatis与MP整合
Mybatis实现查询User
首先创建子Module
子模块也是一个Maven项目
resource下创建日志文件 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
第一步,编写mybatis-confifig.xml文件:
< ? 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&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false" />
<property name = "username" value = "root" />
<property name = "password" value = "root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource = "UserMapper.xml" />
</mappers>
</configuration>
第二步,编写User实体对象
package com.wyh.entity;
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 com.wyh.mapper;
import com.wyh.entity.User;
import java.util.List;
/**
* @description:用户接口
* @author: 魏一鹤
* @createDate: 2022-08-23 22:57
**/
public interface UserMapper {
List<User> findAll();
}
第四步,编写UserMapper.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" >
<mapper namespace = "com.wyh.mapper.UserMapper" >
<select id = "findAll" resultType = "com.wyh.entity.User" >
select * from tb_user
</select>
</mapper>
第五步,编写TestMybatis测试用例:
package com.wyh.test;
import com.wyh.entity.User;
import com.wyh.mapper.UserMapper;
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;
/**
* @description: Mybatis查询测试
* @author: 魏一鹤
* @createDate: 2022-08-23 23:00
**/
public class TestMybatis {
@Test
public void testFindAll() throws Exception{
String resource = "mybatis-config.xml" ;
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user );
}
}
}
测试结果 如下 正常查到全部的数据