目录

一、快速认识tkMapper:

二、tkMapper整合

2.1基于springboot整合mybatis

2.2 添加tkMapper依赖

三、tkMapper的使用:

3.1tkMapper常用方法之增删改

3.2tkMapper常用方法之查询

3.3tkMapper关联查询实现

四、tkMapper逆向工程

一、快速认识tkMapper:

基于mybatis提供了很多第三方插件,这些插件通常可以完成数据操作方法的封装、数据库逆向工程工作(根据数据表生成实体类、映射文件)

tkMapper就是一个Mybatis插件,是在Mybatis的基础上提供了许多工具,让开发变得简单,提高开发效率

  • 提供了针对表通用的数据库操作方法
  • 逆向工程(根据数据表生成实体类、dao接口、映射文件)

二、tkMapper整合

2.1基于springboot整合mybatis

创建springboot工程,创建工程时,添加常用注解的添加(例如:springweb、mybatis、数据驱动文件、lombok)此处略~~

2.2 添加tkMapper依赖

使用tkMapper必须要导入它的依赖项,根据循序渐进和需要我们会添加所有的相关依赖,在这里我们首先需要添加tkmapper的依赖

  <!--整合tkmapper--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency>

添加启动类配置文件:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/fmmall
spring.datasource.username=root
spring.datasource.password=990501mybatis.type-aliases-package=com.xgsm.beans
mybatis.mapper-locations=classpath:mappers/*Mapper

        添加完依赖和启动类配置文件之后,我们需要修改一下@MapperScan注解的包为:import tk.mybatis.spring.annotation.MapperScan;(很重要!!)

三、tkMapper的使用:

        在对tkMapper的使用之前呢,我们需要做一些准备工作。

(1)、创建数据表

users表:

CREATE TABLE `users` (`user_id` int NOT NULL AUTO_INCREMENT COMMENT '主键id 用户id',`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名 用户名',`password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码 密码',`nickname` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '昵称 昵称',`realname` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '真实姓名 真实姓名',`user_img` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头像 头像',`user_mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '手机号 手机号',`user_email` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '邮箱地址 邮箱地址',`user_sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别 M(男) or F(女)',`user_birth` date DEFAULT NULL COMMENT '生日 生日',`user_regtime` datetime NOT NULL COMMENT '注册时间 创建时间',`user_modtime` datetime NOT NULL COMMENT '更新时间 更新时间',PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT COMMENT='用户 ';/*Data for the table `users` */insert  into `users`(`user_id`,`username`,`password`,`nickname`,`realname`,`user_img`,`user_mobile`,`user_email`,`user_sex`,`user_birth`,`user_regtime`,`user_modtime`) values (1,'zhangsan','f379eaf3c831b04de153469d1bec345e',NULL,NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-15 16:10:53','2021-04-15 16:10:53'),(2,'aaaa','1111',NULL,NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-16 11:10:01','2021-04-16 11:10:01'),(3,'wahaha','4297f44b13955235245b2497399d7a93',NULL,NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-16 15:36:52','2021-04-16 15:36:52'),(4,'heihei','4297f44b13955235245b2497399d7a93','二狗',NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-16 15:38:49','2021-04-16 15:38:49'),(5,'Tony','4297f44b13955235245b2497399d7a93','托尼',NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-23 10:25:04','2021-04-23 10:25:04'),(6,'hanmeimei','f379eaf3c831b04de153469d1bec345e',NULL,NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-23 10:30:52','2021-04-23 10:30:52'),(7,'lilei123','4297f44b13955235245b2497399d7a93',NULL,NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-23 10:33:03','2021-04-23 10:33:03'),(8,'tom123123','4297f44b13955235245b2497399d7a93',NULL,NULL,'img/default.png',NULL,NULL,NULL,NULL,'2021-04-23 10:34:49','2021-04-23 10:34:49');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

user_addr表:

/*
SQLyog Ultimate v10.00 Beta1
MySQL - 8.0.26 : Database - fmmall
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`fmmall` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;USE `fmmall`;/*Table structure for table `user_addr` */DROP TABLE IF EXISTS `user_addr`;CREATE TABLE `user_addr` (`addr_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '地址主键id',`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户ID',`receiver_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收件人姓名',`receiver_mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收件人手机号',`province` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份',`city` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '城市',`area` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '区县',`addr` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '详细地址',`post_code` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '邮编',`status` int DEFAULT NULL COMMENT '状态,1正常,0无效',`common_addr` int DEFAULT NULL COMMENT '是否默认地址 1是 1:是  0:否',`create_time` datetime NOT NULL COMMENT '创建时间',`update_time` datetime NOT NULL COMMENT '更新时间',PRIMARY KEY (`addr_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT COMMENT='用户地址 ';/*Data for the table `user_addr` */insert  into `user_addr`(`addr_id`,`user_id`,`receiver_name`,`receiver_mobile`,`province`,`city`,`area`,`addr`,`post_code`,`status`,`common_addr`,`create_time`,`update_time`) values ('1','1','张三','13030303300','湖北','武汉','江夏区','光谷大道77号','421000',1,1,'2021-04-30 09:33:30','2021-04-28 09:33:37'),('2','1','小丽','13131313311','湖北','宜昌','夷陵区','巴拉巴拉','410000',1,0,'2021-04-30 09:34:41','2021-04-30 09:34:44'),('3','6','韩梅梅','13232323322','湖南','长沙','岳麓区','淅沥淅沥','430000',1,1,'2021-04-30 09:35:49','2021-04-30 09:35:53');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

(2)、创建实体类

Users:

package com.xgsm.beans;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;import java.io.Serializable;
import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Users implements Serializable{/** 主键id;用户id */private Integer userId ;/** 用户名;用户名 */private String username ;/** 密码;密码 */private String password ;/** 昵称;昵称 */private String nickname ;/** 真实姓名;真实姓名 */private String realname ;/** 头像;头像 */private String userImg ;/** 手机号;手机号 */private String userMobile ;/** 邮箱地址;邮箱地址 */private String userEmail ;/** 性别;M(男) or F(女) */private char userSex ;/** 生日;生日 */private Date userBirth ;/** 注册时间;创建时间 */private Date userRegtime ;/** 更新时间;更新时间 */private Date userModtime ;}

UserAddr:

package com.xgsm.beans;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;import java.util.Date;;/*** 用户地址;* @author : http://www.chiner.pro* @date : 2022-7-24*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class UserAddr{/** 地址主键id */private String addrId ;/** 用户ID */private String userId ;/** 收件人姓名 */private String receiverName ;/** 收件人手机号 */private String receiverMobile ;/** 省份 */private String province ;/** 城市 */private String city ;/** 区县 */private String area ;/** 详细地址 */private String addr ;/** 邮编 */private String postCode ;/** 状态;1正常,0无效 */private Integer status ;/** 是否默认地址;1是 1:是  0:否 */  0:否")private Integer commonAddr ;/** 创建时间 */private Date createTime ;/** 更新时间 */private Date updateTime ;}

(3)、创建dao接口

tkMapper已经完成了对单表的通用操作的封装,主要封装在Mapper接口和MysqlMapper接口中,因此我们如果要完成对单表的操作,只需要自定义dao接口继承这两个接口即可 。

package com.xgsm.dao;import com.xgsm.beans.Users;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;public interface UserDao  extends Mapper<Users>, MySqlMapper<Users> {
}

(4)、测试接口

导入junit和springboot-test依赖

   <dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>4.13.2</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency>

使用junit生成测试文件

package com.xgsm.dao;import com.xgsm.beans.Users;
import com.xgsm.tkmapperdemo.TkmapperApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.Date;import static org.junit.Assert.*;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperApplication.class)
public class UserDaoTest {
@Autowiredprivate UserDao userDao;
@Test
public void test(){System.out.println(userDao);Users users = new Users();users.setUsername("aaa");users.setPassword("daddd");users.setUserImg("njh.png");users.setUserModtime(new Date());users.setUserRegtime(new Date());userDao.insert(users);
}
}

避坑:由于我们使用的是tkMapper,所以在映射的时候,所以实体类名要与数据库表名保持一致(实体类名为表名首字母大写、带有下划线‘_’的名字,省去下划线,下划线后的第一个首字母大写)如果表名和实体类名不对应会报错,一共有两种解决方式:

  1. 修改实体类名,与表名对应
  2. 使用@Table()注解指定表名

在测试类的时候userdao会报错,提示“找不到userdao”,这里可以忽略(因为是可以获取到的),如果看着不舒服可以在接口中使用@Repository注解

测试结果:

3.1tkMapper常用方法之增删改

3.1.1增加:

增加方法在准备工作中已经完成,如果想了解此部分内容,可以向上进行查看,此处主要是添加功能的另一种实现------------主键回填

package com.xgsm.dao;import com.xgsm.beans.Users;
import com.xgsm.tkmapperdemo.TkmapperApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.Date;import static org.junit.Assert.*;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperApplication.class)
public class UserDaoTest {
@Autowiredprivate UserDao userDao;
@Test
public void addtest(){System.out.println(userDao);Users users = new Users();users.setUsername("aaa");users.setPassword("daddd");users.setUserImg("njh.png");users.setUserModtime(new Date());users.setUserRegtime(new Date());
//    回填idint i = userDao.insertUseGeneratedKeys(users);System.out.println(users.getUserId());assertEquals(1,i);
}}

测试结果:

测试结果,回填的id为空,这里也是一个坑。注意:在进行主键回填的时候,实体类中id必须要用@Id指定一下 ,要不然映射的时候找不到id;

再次测试~

3.1.2修改

        修改主键为‘9’的用户信息。过程如下:创建一个users对象,对象的id是需要修改的用户的id,其他信息是需要更改后的信息。代码如下:

@Testpublic void updateTest(){Users users = new Users(9,"aaaaa","323232","蛙哈哈","我是娃哈哈","wahaha.jpg",null,null,'男',new Date(),new Date(),new Date());
//    修改主键为9的用户信息int i =userDao.updateByPrimaryKey(users);
//   断言assertEquals(1,i);
}

测试结果: 

 3.1.3删除:

        根据id进行删除,代码如下:

    @Testpublic void deleteTest(){int i = userDao.deleteByPrimaryKey(9);assertEquals(1,i);}

3.2tkMapper常用方法之查询

3.2.1查询所有:

   @Testpublic void selectAllTest(){List<Users> usersList = userDao.selectAll();for (Users i :usersList) {System.out.println(i);}}

测试结果:

3.2.2根据主键查询:

    @Testpublic void selectbyidTest(){Users users = userDao.selectByPrimaryKey(8);System.out.println(users);}

测试结果:

3.2.3根据条件查询

查询用户名为‘aaaa’的用户

 @Testpublic void select3Test(){//条件查询Example em = new Example(Users.class);//可以封装任何条件,需要给一个泛型
//       将条件封装到example的内部类Example.Criteria criteria = em.createCriteria();
//       条件的封装是面向对象的criteria.andEqualTo("username","aaaa");
//       criteria.andEqualTo("password","1111");List<Users> users = userDao.selectByExample(em);//符合条件的可能是个集合System.out.println(users);}

测试结果:

3.3tkMapper关联查询实现

查询userid为1的用户信息以及他的收货地址信息

(1)、创建UserAddrDao

package com.xgsm.dao;import com.xgsm.beans.UserAddr;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
import tk.mybatis.mapper.common.SqlServerMapper;public interface UserAddrDao extends Mapper<UserAddr>, MySqlMapper<UserAddr> {
}

(2)、实现

实现思路:在Users中添加 private List<UserAddr> userAddrList。在实现中,先对userID为1 的用户信息进行查询,然后拿到用户信息后,在用查询到的userid作为查询条件,查询userid为1的用户收货地址信息即可~代码如下:

    package com.xgsm.dao;import com.xgsm.beans.UserAddr;
import com.xgsm.beans.Users;
import com.xgsm.tkmapperdemo.TkmapperApplication;
import org.apache.catalina.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;import java.util.Date;
import java.util.List;import static org.junit.Assert.*;@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperApplication.class)
public class UserDaoTest {@Autowiredprivate UserDao userDao;@Autowiredprivate UserAddrDao userAddrDao;@Testpublic void select4Test() {//条件查询Example em = new Example(Users.class);//可以封装任何条件,需要给一个泛型
//       将条件封装到example的内部类Example.Criteria criteria = em.createCriteria();
//       条件的封装是面向对象的criteria.andEqualTo("userId", 1);List<Users> users = userDao.selectByExample(em);//符合条件的可能是个集合
//       得到userid后,二次查询Example example = new Example(UserAddr.class);Example.Criteria criteriaAddr = example.createCriteria();criteria.andEqualTo("userId", users.get(0).getUserId());List<UserAddr> userAddrList = userAddrDao.selectByExample(example);
//        将查询到的集合给usersusers.get(0).setUserAddrList(userAddrList);for (Users i:users) {System.out.println(i);}//System.out.println(users);}}

输出结果如下:

四、tkMapper逆向工程

逆向工程,就是根据创建好的数据表,生成实体类、dao、映射文件

4.1添加逆向工程依赖

此依赖是一个mybatis的maven插件

   <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!-- https://mvnrepository.com/artifact/tk.mybatis/mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>4.1.5</version></dependency></dependencies></plugin>

4.2逆向工程配置

在resources目录下创建generatorConfig.xml,在里面定义了需要生成的表,以及生成文件的路径等信息~

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!-- 引入数据库连接配置 --><!--    <properties resource="jdbc.properties"/>--><context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><!-- 配置 GeneralDAO --><plugin type="tk.mybatis.mapper.generator.MapperPlugin"><property name="mappers" value="com.xgsm.general.GeneralDao"/></plugin><!-- 配置数据库连接 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/fmmall"userId="root" password="990501"></jdbcConnection><!-- 配置实体类存放路径 --><javaModelGenerator targetPackage="com.xgsm.beans" targetProject="src/main/java"/><!-- 配置 XML 存放路径 --><sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mappers"/><!-- 配置 DAO 存放路径 --><javaClientGenerator targetPackage="com.xgsm.dao" targetProject="src/main/java" type="XMLMAPPER"/><!-- 配置需要指定生成的数据库和表,% 代表所有表 --><table tableName="%"></table></context>
</generatorConfiguration>

在此之前要先声明一个‘GeneralDao’

package com.xgsm.general;import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;@Repository
public interface GeneralDao<T> extends MySqlMapper<T>, Mapper<T> {
}

将‘配置文件’设置到maven插件中

  <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><configuration>
<!--                    配置 配置文件的路径--><configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!-- https://mvnrepository.com/artifact/tk.mybatis/mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>4.1.5</version></dependency></dependencies></plugin>

双击mybatis-generator:generate执行逆向生成~

tkMapper的使用-超详细相关推荐

  1. k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...

  2. 手把手从零开始搭建k8s集群超详细教程

    本教程根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps同步所做笔记教程 k8s集群搭建超详细教程 1. 基本环境搭建 1. 创建私有网络 2. 创建服务 ...

  3. 归并排序(代码注释超详细)

    归并排序: (复制粘贴百度百科没什么意思),简单来说,就是对数组进行分组,然后分组进行排序,排序完最后再整合起来排序! 我看了很多博客,都是写的8个数据呀什么的(2^4,分组方便),我就想着,要是10 ...

  4. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  5. 400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划

    作者 | 无名之辈FTER 责编 | 夕颜 出品 | 程序人生(ID:coder_life) 本文翻译自Rasa官方文档,并融合了自己的理解和项目实战,同时对文档中涉及到的技术点进行了一定程度的扩展, ...

  6. 一份超详细的数据科学路线图!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:魔王.陈萍,来源:机器之心 从头开始学习数据科学的免费资源. 如何 ...

  7. OSSIM系统的安装教程(超详细)

    OSSIM系统的安装教程(超详细) 一.创建虚拟机 二.安装ossim系统 三.web登录 一.创建虚拟机 首先在网上下载OSSIM系统的镜像,记住自己保存的位置. 打开vm,新建虚拟机. 选择自定义 ...

  8. 超详细的 Redis Cluster 官方集群搭建指南,适用于 redis 5.x, 6.x

    今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 旧版本使用 redis-trib.rb ruby 脚本安装集群,5.0版本redis-cli 已经自带 ...

  9. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

最新文章

  1. grep 打印出过滤字段及后3行内容
  2. 数据如何导入oracle数据库,如何用Oracle导入导出工具来实现Oracle数据库移植?
  3. GDCM:MrProtocol的测试程序
  4. “鹅厂养鹅”是假的,但腾讯这个“山洞”是真的
  5. 360获公安部“优秀技术支持单位”等七项荣誉
  6. 同步电路出现异步清零可以吗_异步计数器 || 计数器的分类 ||异步二进制十进制|| 74290 8421 5421 || 数电...
  7. 【类】变量复用,函数复用
  8. linux arm current_thread_info定义,linux 内核 current全局变量
  9. jQuery中的html,val,text区别
  10. C#使用并行任务库(TPL)
  11. python json dump_为什么json.dump()没有以\ n结尾? - python
  12. [转]Windows Shell 编程 第五章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987939】...
  13. centos7配置IP地址
  14. 人工智能开源项目之SeetaFace6
  15. 期货开户后需要银期转账绑定
  16. python小白系列2
  17. Cadence OrCAD快速查找元件和网络的方法
  18. ESP32接入小爱同学,实现语音控制
  19. 判断推理加强削弱强度关系
  20. C语言实现通讯录(使用文件保存信息)

热门文章

  1. SQL语句经典50题
  2. EMM Cause #40 No EPS bearer context activated介绍
  3. ac+ap无线网络设置
  4. 使用vba获取excel每个sheet页的名称,并在目录页生成超级链接
  5. 数据库开发016ExecuteReader方法
  6. U盘文件被格式化如何恢复
  7. 【程序媛晒83行代码】素颜女神,轻松分析用户画像
  8. python考试系统的设计与实现开题报告_基于Python新闻定制推送系统设计与实现开题报告...
  9. RadioButton 和 CheckBox
  10. 38岁李光洁二婚小10岁娇妻晒近照,长相甜美颜值高