Mybatis入门---一对多、多对多

2023-05-16

前几天自己配置了Mybatis的高级查询:一对多和多对多,现在记录一下,方便以后用到的时候再回顾,下面是具体的操作步骤

一、首先就是配置Mybatis的xml文件及mapper的xml文件,在这里就不多说了,之前写过这个基本的配置,可以参考:https://www.cnblogs.com/blogs-of-xiu/p/10405407.html

经过配置完基本的xml文件之后,我们就开始实现一对多和多对多的需求。

我这里举的例子是用户和订单,一个用户可以对应多个订单,所以需要的表也是用户表和订单表。数据结构如下:之前的文章中是一对一查询,只用到了user表,现在多了三个表分别是orders【订单表】、order_detail【订单详情】、product【商品表】。

用户与订单的关系为一对多,订单与订单明细的关系是一对多,订单明细与商品表的关系是一对一,用户与商品的关系是多对多。

在这里我们使用的关系是用户与订单【一对多】和用户与商品的关系【多对多】,下面会说明多对多的关系如何配置。

整个数据库的sql结构如下【从逻辑上面推敲,可能有些字段设置的不合适】:


/*
Navicat MySQL Data Transfer

Source Server         : xxx
Source Server Version : 50540
Source Host           : localhost:3306
Source Database       : mybatis

Target Server Type    : MYSQL
Target Server Version : 50540
File Encoding         : 65001

Date: 2019-03-14 11:07:30
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `order_number` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for order_detail
-- ----------------------------
DROP TABLE IF EXISTS `order_detail`;
CREATE TABLE `order_detail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `product_id` int(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `order_id` (`order_id`),
  KEY `product_id` (`product_id`),
  CONSTRAINT `order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `product_id` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for product
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `product_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;  

二、经过数据库的设计之后,我们开始进行实现代码,下面是主要的类:

1、实体类中除了product类不需要加入其它类的对象之外,另外几个类中都需要加入其它实体类的对象。

【原因:例如用户 UserBean 中,属性需要加上订单 Orders 的对象,因为订单对于用户来说是多的一方】

具体的代码如下:

UserBean:


package bean;

import java.util.List;


public class UserBean {
    private int id;
    private String username;
    private String password;
    private List<Orders> ordersList;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    
    public List<Orders> getOrdersList() {
        return ordersList;
    }

    public void setOrdersList(List<Orders> ordersList) {
        this.ordersList = ordersList;
    }

    @Override
    public String toString() {
        return "UserBean [id=" + id + ", username=" + username + ", password=" + password + ", ordersList=" + ordersList
                + "]";
    }

    public UserBean(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }

    public UserBean(int id, String username, String password, List<Orders> ordersList) {
        super();
        this.id = id;
        this.username = username;
        this.password = password;
        this.ordersList = ordersList;
    }

    public UserBean() {
        super();
    }

}  

订单类  Orders:


package bean;

import java.util.List;

public class Orders {
    private int id;
    private int user_id;
    private String number;
    private List<Order_Detail> order_detail;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getUser_id() {
        return user_id;
    }

    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public List<Order_Detail> getOrder_detail() {
        return order_detail;
    }

    public void setOrder_detail(List<Order_Detail> order_detail) {
        this.order_detail = order_detail;
    }

    @Override
    public String toString() {
        return "Orders [id=" + id + ", user_id=" + user_id + ", number=" + number + ", order_detail=" + order_detail
                + "]";
    }

    public Orders(int id, int user_id, String number, List<Order_Detail> order_detail) {
        super();
        this.id = id;
        this.user_id = user_id;
        this.number = number;
        this.order_detail = order_detail;
    }

    public Orders() {
        super();
    }

}  

订单明细 Order_Detail:


package bean;

public class Order_Detail {
    private int id;
    private int order_id;
    private int product_id;
    private Product product;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getOrder_id() {
        return order_id;
    }

    public void setOrder_id(int order_id) {
        this.order_id = order_id;
    }

    public int getProduct_id() {
        return product_id;
    }

    public void setProduct_id(int product_id) {
        this.product_id = product_id;
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    @Override
    public String toString() {
        return "Order_Detail [id=" + id + ", order_id=" + order_id + ", product_id=" + product_id + ", product="
                + product + "]";
    }

    public Order_Detail(int id, int order_id, int product_id, Product product) {
        super();
        this.id = id;
        this.order_id = order_id;
        this.product_id = product_id;
        this.product = product;
    }

    public Order_Detail() {
        super();

    }
}  

商品类  Product:


package bean;

public class Product {
    private int id;
    private String product_name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getProduct_name() {
        return product_name;
    }

    public void setProduct_name(String product_name) {
        this.product_name = product_name;
    }

    @Override
    public String toString() {
        return "Product [id=" + id + ", product_name=" + product_name + "]";
    }

    public Product(int id, String product_name) {
        super();
        this.id = id;
        this.product_name = product_name;
    }

    public Product() {
        super();
    }

}  

2、mapper 接口和mapper.xml文件:

UserMapper 接口:


package mapper;

import java.util.List;

import bean.Orders;
import bean.UserBean;

public interface UserMapper {
    /**
     * description select all users
     */
    public List<UserBean> selectAllUser();

    /**
     * description insert
     */

    public int insertUser(UserBean userbean);

    /**
     * description delete user by id
     * 
     */
    public int deleteUserById(int id);

    /**
     * description update user
     * 
     */
    public int updateUser(UserBean userbean);

    /**
     * description select user by id
     * 
     */
    public UserBean selectUserById(int id);

    // 一对多 查询一个用户对应的多个订单
    public List<Orders> selectOrdersOfUser();

    // 多对多 查询一个用户对应的多个商品
    public List<Orders> selectProductOfUser();

}  

xml文件 UserMapper.xml:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.UserMapper">
    <resultMap id="usermap" type="UserBean">
        <id property="id" column="id" javaType="java.lang.Integer" />
        <result property="username" column="username" javaType="java.lang.String" />
        <result property="password" column="password" javaType="java.lang.String" />
    </resultMap>

    <!-- 一对多 查询用户的订单 -->
    <resultMap id="ordersmap" type="UserBean">
        <!--这个id的column是你要映射到SQL语句中的,这个property是你从真实的beans实体类的属性中的id -->
        <id column="id" property="id" />
        <result column="username" property="username" />
        <result column="password" property="password" />
        <!--因为这个地方的是一对多,要关联到的是一个集合所以使用collection -->
        <collection property="ordersList" ofType="Orders">
            <id column="id" property="id" />
            <result column="order_number" property="number" />
        </collection>
    </resultMap>

    <resultMap id="selectProductOfUserMap" type="UserBean">
        <id column="id" property="id" />
        <result column="username" property="username" />
        <result column="password" property="password" />
        <!-- 通过用户查询订单  ordersList  字段来自UserBean实体类中声明的Order对象名,以下的情况都是--> 
    <collection property="ordersList" ofType="Orders">

    <id column="id" property="id" /> 
<result column="order_number" property="number" />
<!-- 通过订单查询订单明细 --> <collection property="order_detail" ofType="Order_Detail">
<id column="id" property="id" />
<result column="order_id" property="order_id" />
<result column="product_id" property="product_id" />
<!-- 通过订单明细查询商品 --> <association property="product" javaType="Product">
<id column="id" property="id" /> <result column="product_name" property="product_name" />
</association> </collection> </collection> </resultMap>
<select id="selectAllUser" resultMap="usermap">
select
* from user </select> <insert id="insertUser">
insert into user(username,password)values(#{username},#{password})
</insert>
<delete id="deleteUserById"> delete from user where id=#{id} </delete>
<update id="updateUser"> update user set username=#{username},password=#{password} where id=#{id} </update>
<select id="selectUserById" resultMap="usermap"> select * from user where id=#{id} </select>
<!-- 一对多 查询用户的订单 -->
<select id="selectOrdersOfUser" resultMap="ordersmap"> select t1.*, t2.order_number from user t1, orders t2 where t1.id=t2.user_id </select>
<select id="selectProductOfUser" resultMap="selectProductOfUserMap">

select t1.id as user_id,t1.username, t2.id as order_id,t2.order_number, t3.id as order_detail_id,t3.product_id, t4.id as product_id,t4.product_name
from user t1, orders t2, order_detail t3, product t4 where t1.id
=t2.user_id and t3.order_id=t2.id and t3.product_id=t4.id </select> </mapper>

3、逻辑层和测试 我写在了service类,但是这样不太符合规范

UserService类:


package service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import bean.UserBean;
import mapper.UserMapper;
import tools.DB;

public class UserService {
    public static void main(String[] args) {
        // selectAllUser();
        // insertUser();
        // deleteUserById();
        // updateUser();
        // 一对多 查询用户的订单
        // selectOrdersOfUser();
        // 多对多 查询用户对应的商品
        selectProductOfUser();
    }

    private static void selectAllUser() {
        SqlSession session = DB.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        try {
            List<UserBean> user = mapper.selectAllUser();
            System.out.println(user.toString());
            session.commit();

        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        }
    }

    private void insertUser() {
        SqlSession session = DB.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        try {
            UserBean userbean = new UserBean("zs", "123");
            mapper.insertUser(userbean);
            System.out.println(userbean.toString());
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        }

    }

    private static void deleteUserById() {
        SqlSession session = DB.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        try {
            mapper.deleteUserById(3);
            System.out.println("删除成功");
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        }
    }

    private static void updateUser() {
        SqlSession session = DB.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        UserBean userbean = mapper.selectUserById(4);
        System.out.println("修改之前的userbean:" + userbean);
        try {
            userbean.setUsername("hhh");
            userbean.setPassword("111");
            mapper.updateUser(userbean);
            System.out.println("修改之后的userbean:" + userbean);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        }
    }

    // 一对多 查询用户订单
    private static void selectOrdersOfUser() {
        SqlSession session = DB.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.selectOrdersOfUser().toString());
    }

    // 多对多 查询用户对应的商品
    private static void selectProductOfUser() {
        SqlSession session = DB.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.selectProductOfUser().toString());
    }
}  

4、mybatis.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>
    <typeAliases>
        <typeAlias type="bean.UserBean" alias="UserBean"/>
        <typeAlias type="bean.Orders" alias="Orders"/>
        <typeAlias type="bean.Order_Detail" alias="Order_Detail"/>
        <typeAlias type="bean.Product" alias="Product"/>
    </typeAliases>
    <environments default="cybatis">
        <environment id="cybatis">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="mapper"/>
    </mappers>
</configuration>  

5、一对多的关键点是collection标签的配置,多对多中的关键点事collection和association标签的配置。collection里面property的值是来自一对多中多的那方的对象。

多对多的关系中,我们需要将多对多关系拆分成一对多来实现。

【例如多个用户对应多个商品,可以拆分成 :

一个用户对应多个订单(一对多)+ 一个订单对应多个订单明细(一对多) + 一个订单明细对应一个商品(一对一),最终实现用户->商品的联系。】

6、以上就是主要的代码实现,但是这样正常运行的话,在控制台出现的结果和我们将sql语句粘贴到数据库中运行得到的结果不一致。不一致的现象就是在数据库中正常得到我们需要的数据,但是在控制台中得出的却是相同用户id多个订单的情况,只能查到一条数据,原因是mybatis查到主键为id的数据,只会查到第一条。解决办法就是将表中的主键为id的修改一下,不让主键名为id,这样查到的结果就是我们得到的全部数据了。

 

转载于:https://www.cnblogs.com/blogs-of-xiu/p/10528791.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis入门---一对多、多对多 的相关文章

  • Linux shell flock详解,Linux shell:Flock简介

    简介 当多个进程操作同一份资源时 xff0c 为了避免损坏数据 xff0c 每个进程在运行时都要保证其它进程没有同时操作资源 xff0c 这时通过flock命令给资源加锁可以实现此需求 flock 在打开的文件上应用或删除咨询锁 命令flo
  • 如何学习计算机编程语言

    关于如何学习计算机编程语言 xff08 C C 43 43 Java Python PHP xff09 1 计算机编程语言是我们和计算机交流信息的载体 xff0c 我们通过它和计算机 说话 xff0c 计算机听到我们说的话 xff0c 领会
  • WebRTC音视频同步

    这两篇文章 xff0c 可以直接去看 xff1b WebRTC音视频同步机制实现分析 https www jianshu com p 3a4d24a71091 WebRTC音视频同步分析 https blog csdn net lincai
  • nginx编译,修改日志路径

    1 configure without http rewrite module 2 修改objs ngx auto config h ifndef NGX PID PATH define NGX PID PATH 34 var logs n
  • 什么是MySQL执行计划

    要对执行计划有个比较好的理解 xff0c 需要先对MySQL的基础结构及查询基本原理有简单的了解 MySQL本身的功能架构分为三个部分 xff0c 分别是 应用层 逻辑层 物理层 xff0c 不只是MySQL xff0c 其他大多数数据库产
  • SPSS详细操作:生存资料的Cox回归分析

    SPSS详细操作 xff1a 生存资料的Cox回归分析 一 问题与数据 某研究者拟观察某新药的抗肿瘤效果 xff0c 将70名肺癌患者随机分为两组 xff0c 分别采用该新药和常规药物进行治疗 xff0c 观察两组肺癌患者的生存情况 xff
  • 生产者和消费者模型

    生产者和消费者模型 1 什么是生产者和消费者模型 生产者消费者模型具体来讲 xff0c 就是在一个系统中 xff0c 存在生产者和消费者两种角色 xff0c 他们通过内存缓冲区进行通信 xff0c 生产者生产消费者需要的资料 xff0c 消
  • 八大排序算法源码 + 耗时长度比较

    八大排序算法的排序时间长度的比较 xff0c 测试数据10000000时部分结果如下 输入测试数据长度 10000000 数据初始化中 数据初始化完成 堆排序用时 8秒 499毫秒 快速排序用时 22秒 35毫秒 归并排序用时 34秒 47
  • intellij idea - Project Structure 项目结构详解(简单明了)

    IDEA Project Structure 设置 可以点击 按钮 xff0c 或者使用快捷键 Ctrl 43 Shift 43 Alt 43 S 打开 Project Structure 如下如所示 xff1b 项目的左侧面板 Proje
  • Linux下如何查看计算机的配置信息(cpu物理个数、几核)

    查看物理CPU的个数 cat proc cpuinfo grep 34 physical id 34 sort uniq wc l 查看逻辑CPU的个数 cat proc cpuinfo grep 34 processor 34 wc l
  • python的cfg是什么模块_python操作cfg配置文件方式

    cfg文件一般是程序运行的配置文件 xff0c python为读写常见配置文件提供了一个ConfigParser模块 xff0c 所以在python中解析配置文件相当简单 xff0c 下面就举例说明一下具体的操作方法 写文件代码 xff1a
  • 团队价值观五个字_一个优秀的团队应该具有的价值观

    第一 xff1a 树立全局观念 每个员工都应该树立全局观念 xff0c 一个人要想在工作中快速成长 xff0c 就必须把自己的工作纳入全局 xff0c 依靠集体的力量来提升自己 xff1b 每个员工都应该理解并支持企业的整体目标 xff0c
  • matlab中的varargin用法,MATLAB中的nargin与varargin

    varargin 1 定义 xff1a varargin指代的是一个函数的变输入参数列表 所谓的变输入参数列表 xff1a 即varargin可以等价于任意不定个数的输入参数 例如 xff0c F是一个函数 xff0c F a 可以用F v
  • linux和windows局域网连接网络,linux与windows局域网互访

    8种机械键盘轴体对比 本人程序员 xff0c 要买一个写代码的键盘 xff0c 请问红轴和茶轴怎么选 xff1f 场景 做无人机地面站时 xff0c 地面站需要检测数据做实时飞行跟踪和轨迹预测 但是比赛场地设备太多 xff0c 信号嘈杂 x
  • 华为鸿蒙基金,基金筛选:华为鸿蒙新版即将揭开面纱

    如果有人拧熄了灯塔 xff0c 我们怎么航行 xff1f 近日这句由华为创始人任正非发出的声音成为了眼下华为内部思考最多的话题 尤其作为华为 三驾马车 之一的消费者业务部门 xff0c 在接连经受了外部挫折后 xff0c 如何持续前行 xf
  • 360极速浏览器网页保护色

    方法一 xff1a 360浏览器的 扩展中心 有一个 绿色眼睛 的插件 xff1b 但是感觉一般 xff0c 不够彻底 xff1b 方法二 xff1a 360急速浏览器是基于开源Chrome浏览器修改的 xff0c 所以可以直接用Chrom
  • css样式表的标签,CSS样式表标签.doc

    CSS样式表标签 CSS样式表标签选择符大全 一 类型选择符 以下是代码片段 xff1a body font size 12px P color blue 指对网页中已有的标签类型作为名称的选择符 xff0c 如上表示 xff1a body
  • 系统推送服务器搭建,利用云推送服务搭建自己的消息通知系统

    define 39 appid 39 39 1009 39 APP ID define 39 appsec 39 39 c2910c5bcc905a5729fd 39 APP SECRET tokenfile 61 fopen 34 tok
  • 如何修改apk服务器,如何修改apk连接服务器地址

    如何修改apk连接服务器地址 内容精选 换一换 在移动设备上正确安装APP后 xff0c 就可以通过APP登录NetEco服务器 创建弹性云服务器 xff0c 请参见 弹性云服务器用户指南 该弹性云服务器用于连接云数据库RDS实例 xff0
  • 程序员、架构师、技术经理、技术总监和CTO有啥区别?

    http www javaranger com archives 1997 程序员 程序员 xff0c 英文名coder programmer xff0c 大家常自嘲叫码农的阶段 这个角色职责是把需求或产品实现为用户可用的软件产品 此职位为

随机推荐

  • Android Download机制详解(一)DocumentUI部分

    在Android中Google为我们集成了一套十分便利的Download机制 xff0c 用来下载网络上的资源文件 以此省去了我们编写和维护大量与Download相关的代码 组成 Android中Download由三个部分组成 xff1a
  • Mybatis使用-Error attempting to get column 'type' from result set. / '255' in column '4' is outside ...

    一 遇到的问题是这样的 xff1a RemoteTestNG detected TestNG version 6 9 10 log4j Parsing for root with value 61 DEBUG D E stepLog log
  • 数据库索引的基础知识

    一 理解索引的结构 索引在数据库中的作用类似于目录在书籍中的作用 xff0c 用来提高查找信息的速度 使用索引查找数据 xff0c 无需对整表进行扫描 xff0c 可以快速找到所需数据 微软的SQL SERVER提供了两种索引 xff1a
  • 如何解包/编辑/打包boot.img文件

    感谢本文的作者 xff1a Alansj DarkriftX RyeBrye Will Try OP9 Tonyb486 Timmmm Lxrose还有好多不知名的作者们在wiki上的不懈努力 来源 xff1a http android d
  • 【慢慢学算法】:连通图

    题目描述 xff1a 给定一个无向图和其中的所有边 xff0c 判断这个图是否所有顶点都是连通的 输入 xff1a 每组数据的第一行是两个整数 n 和 m xff08 0 lt 61 n lt 61 1000 xff09 n 表示图的顶点数
  • 好的网站收藏---长期更新---长期更新---长期更新---长期更新--

    影视 http www bestxl com 老调网 小浪 http www bttiantang com BT天堂 http oabt org P2P xff0c 中英双语 音乐 书籍 开发 http bbs chinaunix net
  • dump文件,windbg

    dump文件 xff0c 在VC中的调试还是非常非常非常有用的 xff0c 因为我们也不会经每一行代码都加上日志 xff0c 当然如果你愿意 xff0c 也可以每一行都加上日志 xff1b 在Windows上 xff0c 添加dump文件有
  • CSS元素定位

    使用 CSS 选择器定位元素 CSS可以通过元素的id class 标签 xff08 input xff09 这三个常规属性直接定位到 xff0c 而这三种编写方式 xff0c 在HTML中编写style的时候 xff0c 可以进行标识如
  • 极度吸引人的Linode日本机房,已经成为华人大茅房

    Linode主机一直是业内比较认可的好服务商 我的几个站点也挂在Linode 但是一直在Fremont CA机房 今儿是心血来潮把主机转到了JP Tokyo xff0c 结果就出现了下面的事件 事件 事件 自从半个小时以前把Fremont的
  • FTP服务器FileZilla Server配置及使用方法

    FileZilla Server 下载安装完成后 xff0c 安装过程不写说明了 xff0c 网上一抓一大把 xff0c 直接从配置开始记录 1 创建服务器 Password xff1a 栏位中输入本服务器 Filezilla 服务的密码
  • 阿里云安全肖力:云原生安全构筑下一代企业安全架构

    34 数字经济的发展驱动越来越多的企业上云 xff0c 每个企业都会基于云原生安全能力构筑下一代企业安全架构 xff0c 完成从扁平到立体式架构的进化 xff0c 届时云原生安全技术红利也将加速释放 xff01 9月27日 xff0c 阿里
  • Vue 自定义按键修饰符

    如点击F2 触发某个事件 lt input type 61 34 button 34 name 61 34 34 id 61 34 34 value 61 34 添加 34 64 keyup f2 61 34 add 34 gt 自定义全局
  • android Studio keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件

    android Studio keytool 39 不是内部或外部命令 xff0c 也不是可运行的程序 或批处理文件 遇到这个问题好久了 xff0c 一直没解决今天搜集了大量的资料 xff0c 有的说什么Java没配置好 xff0c 不是扯
  • java -jar 运行springboot项目时内存设置

    java Xms64m JVM启动时的初始堆大小 Xmx128m 最大堆大小 Xmn64m 年轻代的大小 xff0c 其余的空间是老年代 XX MaxMetaspaceSize 61 128m XX CompressedClassSpace
  • Jupyter notebook 读取文件的问题

    Jupyter notebook只能打开当前目录下的数据集 xff08 txt CSV等 xff09 xff0c 所以需要把数据集倒导入到当前目录下 xff0c 导入的方法是 1 文件不大时 直接上传文件 pd read csv读取 2 文
  • MIUI目前为止最简单安装谷歌服务框架教程

    安装谷歌服务框架方法有很多 xff0c 比如用第三方 rec卡刷gapps包 用第三方工具安装 然而这些对于新手来说还是比较难的 xff01 我今天说的方法可以说是最简单的 xff1a 1 不需要修改文件 xff1b 2 不需要借助第三方软
  • ubuntu 下通过ftp命令下载文件

    连接 ftp 192 168 180 2 Connected to 192 168 180 2 Name 192 168 180 2 rivsidn admin Password 获取远端文件 ftp gt get test pdf loc
  • MFC与.NET混合编程

    1 xff1a VS2008 建立 MFC程序 xff1b 2 xff1a Alt 43 F7 设置 xff1a 公共语言运行库支持 xff08 选择 xff09 公共语言运行库支持 clr xff1b 3 xff1a 添加 Net相应库
  • pycharm安装到32位操作系统

    在32位操作系统中安装pycharm过程中发现的一些问题 首先是下载了最新版本的pycharm安装后打开 xff0c 弹出未发现可执行的文件 xff0c 然后想到了其他的办法 1 下载最新版本的pycharm不能直接运行 xff0c 因此可
  • Mybatis入门---一对多、多对多

    前几天自己配置了Mybatis的高级查询 xff1a 一对多和多对多 xff0c 现在记录一下 xff0c 方便以后用到的时候再回顾 xff0c 下面是具体的操作步骤 一 首先就是配置Mybatis的xml文件及mapper的xml文件 x