前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MyBatisPlus全攻略:轻松掌握高级数据库操作

MyBatisPlus全攻略:轻松掌握高级数据库操作

作者头像
一只
发布于 2024-07-02 00:16:45
发布于 2024-07-02 00:16:45
92506
代码可运行
举报
运行总次数:6
代码可运行

基础操作

MybatisPlus提供了一系列基础操作的封装,例如插入、更新、删除、查询等。这些操作都是通过Mapper接口和实现类来完成的,开发者只需要继承BaseMapper接口即可。

1. 基础操作概念

MybatisPlus的基础操作封装了常见的增删改查操作,使得开发者可以更容易地使用MybatisPlus进行数据库操作。这些基础操作是通过Mapper接口和实现类来完成的,开发者只需要继承BaseMapper接口即可。以下是MybatisPlus支持的基础操作:

  • 插入:insert、insertBatch、insertOrUpdate 等方法。- 更新:updateById、update、updateBatchById 等方法。- 删除:deleteById、deleteByMap、delete 等方法。- 查询:selectById、selectBatchIds、selectByMap、selectOne、selectList、selectPage等方法。
2. 基础操作示例

下面是一个使用MybatisPlus进行基础操作的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义实体类
@Data
public class User {<!-- -->
    private Long id;
    private String name;
    private Integer age;
}

// 定义Mapper接口
public interface UserMapper extends BaseMapper&lt;User&gt; {<!-- -->}

// 插入数据
User user = new User();
user.setName("Tom");
user.setAge(18);
userMapper.insert(user);

// 更新数据
user.setName("Jerry");
userMapper.updateById(user);

// 删除数据
userMapper.deleteById(1L);

// 查询数据
User result = userMapper.selectById(2L);
List&lt;User&gt; users = userMapper.selectList(null);
Page&lt;User&gt; page = userMapper.selectPage(new Page&lt;&gt;(1, 10), null);

在这个示例中,我们定义了一个名为User的实体类,并继承了Serializable接口。然后,我们定义了一个名为UserMapper的Mapper接口,并继承了BaseMapper。在插入、更新、删除、查询数据时,我们分别调用了UserMapper中的insert、updateById、deleteById、selectById等方法,完成了基础操作。

以上就是MybatisPlus基础操作的概念和代码示例。通过使用MybatisPlus提供的基础操作,我们可以更快速、更方便地进行数据库操作,提高开发效率。

分页查询

MybatisPlus支持分页查询,并且提供了丰富的分页查询API,例如Page类、IPage接口、PaginationInterceptor插件等。

1. 分页查询概念

分页查询是一种常见的数据库查询方式,它将大量数据拆分成若干个小块进行查询,从而提高查询效率和用户体验。MybatisPlus提供了丰富的分页查询API,例如Page类、IPage接口、PaginationInterceptor插件等,使得开发者可以更方便地进行分页查询操作。

2. 分页查询示例

下面是一个使用MybatisPlus进行分页查询的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义Mapper接口
public interface UserMapper extends BaseMapper&lt;User&gt; {<!-- -->}

// 分页查询数据
Page&lt;User&gt; page = new Page&lt;&gt;(1, 10);
QueryWrapper&lt;User&gt; wrapper = new QueryWrapper&lt;&gt;();
wrapper.eq("age", 18);
userMapper.selectPage(page, wrapper);

在这个示例中,我们定义了一个名为UserMapper的Mapper接口,并继承了BaseMapper。在分页查询数据时,我们首先创建了一个名为page的Page对象,指定当前页数为1,每页显示10条记录。然后,我们使用QueryWrapper构造器创建一个查询条件,查询年龄为18的用户信息。最后,我们调用userMapper的selectPage方法进行分页查询,并将查询结果赋值给page对象。

3. 分页查询SQL代码

MybatisPlus会自动根据传入的分页参数生成对应的SQL语句,以下是MybatisPlus生成的分页查询SQL示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT id,name,age FROM user WHERE age = ? LIMIT ?,?
-- 参数1:查询条件 age=18
-- 参数2:偏移量,即从第几条记录开始查询,例如当前页数为1,每页显示10条数据,则偏移量为0-- 参数3:每页显示的记录数,例如当前页数为1,每页显示10条数据,则每页显示的记录数为10

以上就是MybatisPlus支持分页查询的概念、代码示例和生成的SQL语句。通过使用MybatisPlus提供的分页查询API,我们可以更方便地进行分页查询操作,并且可以提高查询效率和用户体验。

条件构造器

MybatisPlus提供了一种灵活、方便的条件构造器,可以根据动态条件生成SQL语句。常用的构造器有QueryWrapper和UpdateWrapper。

1. 条件构造器概念

条件构造器是MybatisPlus提供的一种灵活、方便的查询方式,可以根据动态条件生成SQL语句。常用的条件构造器有QueryWrapper和UpdateWrapper。QueryWrapper主要用于查询操作,UpdateWrapper主要用于更新操作。

2. 条件构造器示例

下面是一个使用MybatisPlus进行条件查询的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义Mapper接口
public interface UserMapper extends BaseMapper&lt;User&gt; {<!-- -->}

// 构造查询条件
QueryWrapper&lt;User&gt; wrapper = new QueryWrapper&lt;&gt;();
wrapper.eq("age", 18);
if (StringUtils.isNotBlank(name)) {<!-- -->
    wrapper.like("name", name);
}
List&lt;User&gt; users = userMapper.selectList(wrapper);

在这个示例中,我们定义了一个名为UserMapper的Mapper接口,并继承了BaseMapper。在构造查询条件时,我们使用QueryWrapper构造器创建一个查询条件,查询年龄为18且姓名包含指定字符串的用户信息。其中,eq方法表示等于,like方法表示模糊匹配。如果传入姓名参数,则添加姓名匹配条件。最后,我们调用userMapper的selectList方法执行查询操作,并将查询结果赋值给users对象。

3. 条件构造器SQL代码

MybatisPlus会自动生成对应的SQL语句,以下是MybatisPlus生成的条件查询SQL示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT id,name,age FROM user WHERE age = ? AND name LIKE ?
-- 参数1:查询条件 age=18
-- 参数2:查询条件 name like '%xxx%'

以上就是MybatisPlus条件构造器的概念、代码示例和生成的SQL语句。通过使用MybatisPlus提供的条件构造器,我们可以更灵活地进行查询操作,并且可以根据动态条件生成对应的SQL语句,提高查询效率和可维护性。

自动填充

MybatisPlus支持自动填充数据库表中的某些字段,例如创建时间、更新时间等。可以通过实现MetaObjectHandler接口实现自动填充功能。

1. 自动填充概念

自动填充是MybatisPlus提供的一种方便、快捷的功能,它可以自动填充数据库表中的某些字段,例如创建时间、更新时间等。通过实现MetaObjectHandler接口并重写对应的方法,即可实现自动填充功能。

2. 自动填充示例

下面是一个使用MybatisPlus进行自动填充的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义实体类
@Data
public class User {<!-- -->
    private Long id;
    private String name;
    private Integer age;
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

// 实现MetaObjectHandler接口
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {<!-- -->
    @Override
    public void insertFill(MetaObject metaObject) {<!-- -->
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
    }

    @Override
    public void updateFill(MetaObject metaObject) {<!-- -->
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

// 插入数据
User user = new User();
user.setName("Tom");
user.setAge(18);
userMapper.insert(user);

// 更新数据
user.setName("Jerry");
userMapper.updateById(user);

在这个示例中,我们定义了一个名为User的实体类,并在其中定义了创建时间和更新时间两个属性,并在其注解@TableField中指定了对应的填充策略。然后,我们实现了一个名为MyMetaObjectHandler的类,并继承了MetaObjectHandler接口,重写了insertFill、updateFill方法,分别表示插入和更新时填充对应的字段。最后,在插入和更新数据时,MybatisPlus会自动调用MyMetaObjectHandler的对应方法进行自动填充。

3. 自动填充SQL代码

自动填充是在Java层面进行处理的,不需要生成对应的SQL语句。

以上就是MybatisPlus自动填充的概念、代码示例和说明。通过使用MybatisPlus提供的自动填充功能,我们可以更方便地进行数据库操作,并且可以避免手动填充某些字段的繁琐工作。

代码生成器

MybatisPlus提供了一个强大的代码生成器,可以根据数据库表结构自动生成JavaBean、Mapper接口、XML文件等代码,极大地提高了开发效率。

1. 代码生成器概念

MybatisPlus提供了一个强大的代码生成器,可以根据数据库表结构自动生成JavaBean、Mapper接口、XML文件等代码,极大地提高了开发效率。通过使用代码生成器,我们可以快速生成基础的CURD代码,并且可以避免手写重复的代码。

2. 代码生成器示例

下面是一个使用MybatisPlus代码生成器的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 配置代码生成器
AutoGenerator generator = new AutoGenerator();
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir("src/main/java");
globalConfig.setAuthor("Little B");
generator.setGlobalConfig(globalConfig);

DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&amp;characterEncoding=utf8");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("123456");
generator.setDataSource(dataSourceConfig);

PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example.mybatisplusdemo");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
generator.setPackageInfo(packageConfig);

StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
strategyConfig.setInclude("user");
generator.setStrategy(strategyConfig);

TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setEntity("/templates/entity.java");
templateConfig.setMapper("/templates/mapper.java");
templateConfig.setXml("/templates/mapper.xml");
generator.setTemplate(templateConfig);

generator.execute();

在这个示例中,我们使用MybatisPlus提供的AutoGenerator类来配置代码生成器。首先,我们配置了全局配置信息(GlobalConfig),包括输出路径、作者等;然后,配置了数据源信息(DataSourceConfig),包括数据库类型、连接地址、用户名和密码等;接下来,配置了包信息(PackageConfig),包括父包路径、实体类包名、Mapper接口包名等;再次,配置了策略信息(StrategyConfig),包括表命名规则、列命名规则、是否使用Lombok等;最后,配置了模板信息(TemplateConfig),包括模板文件路径。完成配置后,我们调用generator的execute方法即可生成对应的代码。

3. 代码生成器SQL代码

代码生成器是在Java层面进行处理的,不需要生成对应的SQL语句。

以上就是MybatisPlus代码生成器的概念、代码示例和说明。通过使用MybatisPlus提供的代码生成器,我们可以快速生成基础的CURD代码,并且可以避免手写重复的代码,提高开发效率。

性能优化

MybatisPlus针对Mybatis的性能问题进行了优化,例如使用PreparedStatement代替Statement、使用缓存等。同时,MybatisPlus还提供了丰富的性能监控和调优工具。

1. 性能优化概念

MybatisPlus针对Mybatis的性能问题进行了优化,例如使用PreparedStatement代替Statement、使用缓存等。这些优化措施可以提高MybatisPlus的执行效率和性能表现。同时,MybatisPlus还提供了丰富的性能监控和调优工具,可以帮助开发人员更好地分析和优化代码性能。

2. 性能优化示例

下面是一个使用MybatisPlus进行查询操作的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 查询数据
List&lt;User&gt; users = userMapper.selectList(new LambdaQueryWrapper&lt;User&gt;().eq(User::getAge, 18).like(StringUtils.isNotBlank(name), User::getName, name));

在这个示例中,我们使用了MybatisPlus提供的LambdaQueryWrapper构造器构建查询条件,并执行selectList方法进行查询操作。其中,eq方法表示相等条件,like方法表示模糊匹配条件,StringUtils.isNotBlank(name)表示判断字符串name是否为空。MybatisPlus会智能处理这些条件,并生成对应的SQL语句。

3. 性能优化SQL代码

MybatisPlus使用了一系列优化措施来提高性能,例如使用PreparedStatement代替Statement、使用缓存等。以下是一些SQL优化技巧:

  • 使用PreparedStatement代替Statement:PreparedStatement是预编译的SQL语句,可以减少SQL语句解析和编译时间,提高执行效率。- 使用批量提交:将多条SQL语句一起提交可以减少与数据库的交互次数,提高执行效率。- 使用缓存:MybatisPlus默认开启了二级缓存,可以将查询结果缓存到内存中,减少访问数据库的次数,提高查询效率。- 避免使用not in:not in语句会导致全表扫描,性能较差。可以使用其他方式替代,如使用left join。 以上就是MybatisPlus的性能优化概念、代码示例和SQL优化技巧。通过遵循这些优化建议,我们可以更好地优化MybatisPlus应用程序的性能表现。

多租户

MybatisPlus支持多租户模式,可以根据不同的租户动态切换数据源。

1. 多租户概念

多租户是指在一个应用程序中,为不同的租户提供独立的数据空间,可以根据不同的租户动态切换数据源。MybatisPlus支持多租户模式,可以为每个租户配置独立的数据源,并在运行时动态切换数据源。

2. 多租户示例

下面是一个使用MybatisPlus进行多租户查询操作的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义Mapper接口
public interface UserMapper extends BaseMapper&lt;User&gt; {<!-- -->}

// 动态切换数据源
DynamicDataSourceContextHolder.setDataSourceType("tenant_1");
List&lt;User&gt; users = userMapper.selectList(new LambdaQueryWrapper&lt;User&gt;().eq(User::getAge, 18));
DynamicDataSourceContextHolder.clearDataSourceType();

在这个示例中,我们首先定义了一个名为UserMapper的Mapper接口,继承了BaseMapper,表示对User表进行操作。然后,我们调用DynamicDataSourceContextHolder类的setDataSourceType方法切换数据源,再执行查询操作。最后,清除数据源信息。

3. 多租户SQL代码

多租户需要配置多个数据源,并在运行时根据租户信息动态切换数据源。以下是一些相关的SQL代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建租户表
CREATE TABLE tenant (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL,
    db_url VARCHAR(128) NOT NULL,
    db_username VARCHAR(32) NOT NULL,
    db_password VARCHAR(32) NOT NULL
);

# 创建租户1的用户表
CREATE TABLE user_tenant_1 (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL,
    age INT NOT NULL
);

# 创建租户2的用户表
CREATE TABLE user_tenant_2 (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL,
    age INT NOT NULL
);

# 配置多数据源信息
spring.datasource.tenant1.url = jdbc:mysql://localhost:3306/tenant1?useUnicode=true&amp;characterEncoding=utf8
spring.datasource.tenant1.username = root
spring.datasource.tenant1.password = 123456

spring.datasource.tenant2.url = jdbc:mysql://localhost:3306/tenant2?useUnicode=true&amp;characterEncoding=utf8
spring.datasource.tenant2.username = root
spring.datasource.tenant2.password = 123456

# 配置MybatisPlus多租户插件
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: is_deleted
      logic-delete-value: 1
      logic-not-delete-value: 0
      sql-injector: com.baomidou.mybatisplus.extension.injector.LogicSqlInjector
      tenant-handler: com.example.mybatisplusdemo.handler.MyTenantHandler
  configuration:
    map-underscore-to-camel-case: true
    use-generated-keys: true
    default-auto-mapping-type: full
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    plugins:
      - com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
      - com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor
      - com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParserPlugin

以上就是MybatisPlus多租户的概念、代码示例和SQL代码。通过使用MybatisPlus提供的多租户功能,我们可以为不同的租户提供独立的数据空间,并根据不同的租户动态切换数据源,提高应用程序的灵活性和应用场景的适配性。

乐观锁

MybatisPlus提供了乐观锁功能,可以避免并发更新时的数据冲突问题。

1. 乐观锁概念

乐观锁是指在并发更新时,通过版本号等方式进行并发控制,避免不必要的数据冲突问题。MybatisPlus提供了乐观锁功能,可以自动对实体类中的某个字段进行版本号控制,并在更新时自动检测版本号是否一致,如果不一致则抛出OptimisticLockException异常,提示用户重新获取最新数据。

2. 乐观锁示例

下面是一个使用MybatisPlus进行乐观锁更新操作的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 查询数据
User user = userMapper.selectById(1L);

// 更新数据
user.setName("Tom");
int rows = userMapper.update(user, new UpdateWrapper&lt;User&gt;().eq(User::getId, user.getId()).eq(User::getVersion, user.getVersion()));
if (rows == 0) {
    throw new OptimisticLockException("更新失败:数据已被其他用户修改,请刷新后重试!");
}

在这个示例中,我们首先查询出id为1的User对象,并进行更新操作。在更新时,我们使用UpdateWrapper构建更新条件,并同时比较version字段是否一致,如果版本号不一致则说明数据已经被其他用户修改,此时抛出OptimisticLockException异常,提示用户重新获取最新数据。

3. 乐观锁SQL代码

乐观锁需要给实体类增加一个版本号字段,并在更新时自动进行版本号校验。以下是一些相关的SQL代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建用户表
CREATE TABLE user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL,
    age INT NOT NULL,
    version INT DEFAULT 0 NOT NULL
);

# 插入数据
INSERT INTO user (name, age) VALUES ('Tom', 18);

# 修改数据
UPDATE user SET name = 'Jerry', version = version + 1 WHERE id = 1 and version = 0;

以上就是MybatisPlus乐观锁的概念、代码示例和SQL代码。通过使用MybatisPlus提供的乐观锁功能,我们可以在并发更新时避免数据冲突问题,并提高应用程序的并发性能和数据一致性

其他功能

除了以上功能外,MybatisPlus还提供了很多其他便捷的功能,例如枚举映射、注解式Mapper等。

1. 枚举映射

MybatisPlus提供了枚举映射功能,可以将Java中的枚举类型映射到数据库中的某个字段,并实现自动转换。例如,将Java中的Gender枚举类型映射到user表的gender字段。

下面是一个使用枚举映射功能的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义Gender枚举类型
public enum Gender {<!-- -->
    MALE(1),
    FEMALE(2);

    private Integer code;

    Gender(Integer code) {<!-- -->
        this.code = code;
    }

    public Integer getCode() {<!-- -->
        return code;
    }
}

// 定义User实体类
@Data
public class User {<!-- -->
    private Long id;
    private String name;
    private Integer age;
    private Gender gender;
}

// 定义UserMapper接口
public interface UserMapper extends BaseMapper&lt;User&gt; {<!-- -->}

// 配置枚举映射
@Configuration
public class MybatisPlusConfig {<!-- -->

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {<!-- -->
        return new ConfigurationCustomizer() {<!-- -->
            @Override
            public void customize(Configuration configuration) {<!-- -->
                configuration.getTypeHandlerRegistry().register(Gender.class, EnumTypeHandler.class);
            }
        };
    }
}

在这个示例中,我们首先定义了一个名为Gender的枚举类型,用于表示用户的性别。然后,定义了User实体类,并将gender字段与Gender枚举类型映射。最后,配置了MybatisPlusConfig,注册了EnumTypeHandler枚举类型处理器。

2. 注解式Mapper

MybatisPlus提供了注解式Mapper功能,可以通过注解方式定义Mapper接口,而不是传统的XML文件方式。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义UserMapper接口
@Mapper
public interface UserMapper {<!-- -->

    @Select("select * from user where id = #{id}")
    User selectById(@Param("id") Long id);

    @Insert("insert into user (name, age) values (#{name}, #{age})")
    int insert(User user);

    @Update("update user set name = #{name} where id = #{id}")
    int updateNameById(@Param("id") Long id, @Param("name") String name);

    @Delete("delete from user where id = #{id}")
    int deleteById(@Param("id") Long id);
}

在这个示例中,我们使用@Mapper注解定义了一个名为UserMapper的Mapper接口,并通过注解方式定义了一些基本的CURD方法。

以上就是MybatisPlus的其他便捷功能的概念、代码示例和SQL代码。通过使用MybatisPlus提供的这些便捷功能,我们可以更方便地进行开发和维护,并提高应用程序的灵活性和可扩展性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Python 自动化指南(繁琐工作自动化)第二版:十三、使用 EXCEL 电子表格
Excel 是一个流行且功能强大的 Windows 电子表格应用。openpyxl模块允许您的 Python 程序读取和修改 Excel 电子表格文件。例如,您可能有从一个电子表格中复制某些数据并粘贴到另一个电子表格中的枯燥任务。或者,您可能必须遍历数千行,然后只挑选出其中的一小部分,根据某些标准进行小的编辑。或者你可能不得不查看数百份部门预算的电子表格,寻找任何赤字。这些正是 Python 可以为您完成的那种枯燥、无需动脑的电子表格任务。
ApacheCN_飞龙
2023/04/04
18.9K0
Python 自动化指南(繁琐工作自动化)第二版:十三、使用 EXCEL 电子表格
python处理Excel实现自动化办公教学(含实战)【二】
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
汀丶人工智能
2022/12/21
1.7K0
python处理Excel实现自动化办公教学(含实战)【二】
python处理Excel实现自动化办公教学(含实战)【一】
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
汀丶人工智能
2022/12/21
1.3K0
python处理Excel实现自动化办公教学(含实战)【一】
Python处理Excel数据的方法[通俗易懂]
当Excel中有大量需要进行处理的数据时,使用Python不失为一种便捷易学的方法。接下来,本文将详细介绍多种Python方法来处理Excel数据。
全栈程序员站长
2022/11/18
6K0
使用Python Xlsxwriter创建Excel电子表格
在本文中,我们将使用Python创建高保真的Excel电子表格。“高保真”意味着Python生成的Excel电子表格看起来像是由人创建的真实Excel文件一样,包含值、公式、不同的格式以及图表。
fanjy
2021/12/06
4.9K0
使用Python Xlsxwriter创建Excel电子表格
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
汀丶人工智能
2022/12/21
5K1
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
Python与Excel协同应用初学者指南
本文将探讨学习如何在Python中读取和导入Excel文件,将数据写入这些电子表格,并找到最好的软件包来做这些事。
fanjy
2022/03/07
18.6K0
Python与Excel协同应用初学者指南
Python操作Excel文件(1)
文章背景:Excel是Window环境下流行的、强大的电子表格应用。openpyxl模块让Python程序能够读取和修改Excel电子表格文件。下面介绍如何通过Python操作Excel文件。
Exploring
2022/09/20
4380
Python操作Excel文件(1)
Python创建Excel重复写入
在开始正式编写代码之前,我们需要先安装openpyxl库。打开命令行终端,运行以下命令:
很酷的站长
2023/09/07
5250
用 Python 帮运营妹纸快速搞定 Excel 文档
Microsoft Office 被广泛用于商务和运营分析中, 其中 Excel 尤其受欢迎。Excel 可以用于存储表格数据、创建报告、图形趋势等。在深入研究用 Python 处理 Excel 文档之前,让我们先了解一些基本术语:
章鱼猫先生
2021/10/15
5K0
用 Python 帮运营妹纸快速搞定 Excel 文档
Python实例篇:自动操作Excel文件(既简单又特别实用)
大家平时在工作与学习中都会操作到Excel文件格式,特别是很多数据的时候,靠人力去识别操作非常容易出错。今天就带大家用Python来处理Excel文件,让你成为一个别人眼中的秀儿~
润森
2022/09/22
2.6K0
用Python让你的爱豆陪你度过2019
使用的模块为openpyxl,一个能读取和修改Excel电子表格的Pyhton模块。
数据森麟
2019/09/27
6190
用Python自动化生成胡歌爱豆日历
使用的模块为openpyxl,一个能读取和修改Excel电子表格的Pyhton模块。
sergiojune
2019/03/07
9080
Python操作Excel文件(2)
文章背景:Excel是Window环境下流行的、强大的电子表格应用。openpyxl模块让Python程序能够读取和修改Excel电子表格文件。下面介绍如何通过Python操作Excel文件。
Exploring
2022/09/20
3660
Python操作Excel文件(2)
详解Python对Excel处理
在开始之前,我们需要安装一些Python第三方库,用于对Excel文件进行处理。以下是常用的库:
子午Python
2023/07/24
7280
Python从0到100(二十一):用Python读写Excel文件
Excel是Microsoft(微软)为使用Windows和macOS操作系统开发的一款电子表格软件。Excel凭借其直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,一直以来都是最为流行的个人计算机数据处理软件。当然,Excel也有很多竞品,例如Google Sheets、LibreOffice Calc、Numbers等,这些竞品基本上也能够兼容Excel,至少能够读写较新版本的Excel文件,当然这些不是我们讨论的重点。掌握用Python程序操作Excel文件,可以让日常办公自动化的工作更加轻松愉快,而且在很多商业项目中,导入导出Excel文件都是特别常见的功能。
是Dream呀
2024/05/28
2950
python操作Excel,你觉得哪个库更好呢?
每一个Excel数据文件从上至下分为三个层级的对象: workbook: 每一个Excel文件就是一个workbook。 sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。 cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
星星在线
2018/08/21
12.6K0
python操作Excel,你觉得哪个库更好呢?
Python下Excel批量处理工具:从入门到实践
在日常办公中,Excel表格处理是一项常见且繁琐的任务。当需要处理大量Excel文件时,手动操作不仅效率低下,还容易出错。因此,开发一款Excel批量处理工具成为了一个迫切的需求。本文将介绍如何使用Python语言开发一款Excel批量处理工具,帮助快速上手并实现自动化处理。
大盘鸡拌面
2024/05/09
4530
这可能是前端处理excel最好的工具了
大家好,我是程序视点的小二哥! 今天要分享的是一个纯前端实现读取和导出excel文件的工具库:ExcelJS
程序视点
2023/07/26
9310
这可能是前端处理excel最好的工具了
《Python for Excel》读书笔记连载17:使用读写器包进行Excel文件操作(上)
虽然我们都能感知到“时间的流逝”,但却始终无法确定“时间”究竟是什么,唯一能确定的是,“时间”确实在一点点地失去,并且不可逆转。人的一生“时间”并不多,请珍惜你的时间!
fanjy
2022/01/07
4.2K0
《Python for Excel》读书笔记连载17:使用读写器包进行Excel文件操作(上)
推荐阅读
相关推荐
Python 自动化指南(繁琐工作自动化)第二版:十三、使用 EXCEL 电子表格
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 基础操作
    • 1. 基础操作概念
    • 2. 基础操作示例
  • 分页查询
    • 1. 分页查询概念
    • 2. 分页查询示例
    • 3. 分页查询SQL代码
  • 条件构造器
    • 1. 条件构造器概念
    • 2. 条件构造器示例
    • 3. 条件构造器SQL代码
  • 自动填充
    • 1. 自动填充概念
    • 2. 自动填充示例
    • 3. 自动填充SQL代码
  • 代码生成器
    • 1. 代码生成器概念
    • 2. 代码生成器示例
    • 3. 代码生成器SQL代码
  • 性能优化
    • 1. 性能优化概念
    • 2. 性能优化示例
    • 3. 性能优化SQL代码
  • 多租户
    • 1. 多租户概念
    • 2. 多租户示例
    • 3. 多租户SQL代码
  • 乐观锁
    • 1. 乐观锁概念
    • 2. 乐观锁示例
    • 3. 乐观锁SQL代码
  • 其他功能
    • 1. 枚举映射
    • 2. 注解式Mapper
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档