Mybatis

本文介绍了框架技术在提高开发效率中的作用,包括Struts2、Spring等主流框架,以及ORM(如Hibernate和MyBatis)在持久化中的运用。重点讲解了MyBatis-Plus在简化SpringBoot开发中的案例,展示了其基础架构和增删改查操作。

一、什么是框架技术?

1. 为什么需要框架技术?

如何更快更好地写简历?
  • 使用word简历模板

使用模板有什么好处呢?

  • 不用考虑布局、排版等,提高效率

  • 可专心在简历内容上

  • 结构统一,便于人事阅读

  • 新手也可以做出专业的简历

2. 什么是框架技术?

框架技术

  • 是一个应用程序的半成品

  • 提供可重用的公共结构

  • 按一定规则组织的一组组件

框架的优势

  • 不用再考虑公共问题

  • 专心在业务实现上

  • 结构统一,易于学习、维护

  • 新手也可写出好程序

3. 主流框架技术介绍

  • Struts2

    • MVC设计模式的实现

    • 拦截器

    • 可变和可重用的标签

  • Hibernate

    • ORM,简化数据库操作

    • DAO层

  • Spring

    • 依赖注入容器 / AOP实现

    • 声明式事务

    • 简化Java EE应用

    • 黏合剂,将大家组装到一起

  • Spring MVC

    • 结构最清晰的MVC Model2实现

    • 高度可配置,支持多种视图技术

    • 定制化开发

  • MyBatis

    • 半自动化的ORM实现

    • DAO层

    • 动态SQL

    • 小巧灵活、简单易学

二、持久化与 ORM

1. 持久化

持久化: 是程序数据在瞬时状态和持久状态间转换的过程

2. ORM (Object Relation Mapping)

ORM(Object Relational Mapping)

  • 编写程序的时候,以面向对象的方式处理数据

  • 保存数据的时候,却以关系型数据库的方式存储

ORM解决方案包含下面四个部分
  1. 在持久化对象上执行基本的增、删、改、查操作

  2. 对持久化对象提供一种查询语言或者API

  3. 对象关系映射工具

  4. 提供与事务对象交互、执行检查、延迟加载以及其他优化功能

ORM 本质:

  1. 将实体类和表对应起来;

  2. 将类属性和表字段对应起来;

  3. 自动完成对象和记录的转换。

3. MyBatis 简介

  • MyBatis前身是iBatis,本是Apache的一个开源的项目 官方网站:mybatis

  • MyBatis 是一个 ORM 框架

    • 实体类和SQL语句之间建立映射关系

  • 特点

    • 基于SQL语法,简单易学

    • 能了解底层封装过程

    • SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度

    • 方便程序代码调试

三、什么是 MyBatis-Plus ?

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

官网:MyBatis-Plus

基本架构

1. 入门案例

  1. 准备数据库和数据。本例我们使用 webDVD

  2. 创建 SpringBoot 项目,选择功能:

    • Lombok

    • Spring Web

    • MySQL Driver

    • MybatisPlus

  3. 修改 application.yml 配置数据源

    spring:
        datasource:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://127.0.0.1:3306/webdvd?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
            username: root
            password: 123
  4. MybatisPlus 配置(分页)

    @Configuration
    @MapperScan("com.by.mybatisplus01.dao")
    public class MybatisPlusConfig {
        /**
        * 添加分页插件
        */
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加
            //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
            return interceptor;
        }
    }
  5. 添加实体类

    @Data
    @AllArgsConstructor
    public class Dvd {
        private Integer id;
        private String  name;
        private Integer state;
        private Date    lendDate;
        private Integer count;
    }
  6. 添加 dao 接口

    package com.by.mybatisplus01.dao;
    ​
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.by.mybatisplus01.entity.Dvd;
    ​
    public interface DvdMapper extends BaseMapper<Dvd> {
    ​
    }

    注: 对!接口是空的,只需继承 BaseMapper 即可。

  7. 测试。增删改查操作

    package com.by.mybatisplus01;
    ​
    import com.by.mybatisplus01.dao.DvdMapper;
    import com.by.mybatisplus01.entity.Dvd;
    import org.springframework.boot.test.context.SpringBootTest;
    import javax.annotation.Resource;
    import java.util.*;
    ​
     @SpringBootTest
     class MybatisPlus01ApplicationTests {
         @Resource
         private DvdMapper dvdMapper;
     
     //    @Test
         public void test01_findAll(){
             List<Dvd> list = dvdMapper.selectList(null);
             list.forEach(System.out::println);
         }
     
     //    @Test
         public void test02_get(){
             Dvd dvd = dvdMapper.selectById(10);
             System.out.println(dvd);
         }
     
     //    @Test
         public void test03_insert(){
             Dvd dvd = new Dvd(null, "教父I", 0, new Date(), 0);
             int r = dvdMapper.insert(dvd);
             System.out.println(r);
             System.out.println(dvd);
         }
     
     //    @Test
         public void test04_update(){
             // 只修改非空字段
             Dvd dvd = new Dvd(41, null, null, null, 100);
             int r = dvdMapper.updateById(dvd);
             System.out.println(r);
             System.out.println(dvd);
         }
     
     //    @Test
         public void test05_delete(){
             int r = dvdMapper.deleteById(41);
             System.out.println(r);
         }
     
         // 根据条件查询记录
     //    @Test
         public void test06_selectOne(){
             Map<String, Object> cond = new HashMap<>();
             cond.put("state", 1);   // key 是列名
             List<Dvd> list = dvdMapper.selectByMap(cond);
             list.forEach(System.out::println);
         }
     
         // 根据 id 批量查询
     //    @Test
         public void test07_selectByIds(){
             List<Integer> ids = new ArrayList<>();
             ids.add(1);
             ids.add(3);
             ids.add(40);
             List<Dvd> list = dvdMapper.selectBatchIds(ids);
             list.forEach(System.out::println);
         }
     }

总结

内容概要:文章以“智能网页数据标注工具”为例,深入探讨了谷歌浏览器扩展在毕业设计中的实战应用。通过开发具备实体识别、情感分类等功能的浏览器扩展,学生能够融合前端开发、自然语言处理(NLP)、本地存储与模型推理等技术,实现高效的网页数据标注系统。文中详细解析了扩展的技术架构,涵盖Manifest V3配置、内容脚本与Service Worker协作、TensorFlow.js模型在浏览器端的轻量化部署与推理流程,并提供了核心代码实现,包括文本选择、标注工具栏动态生成、高亮显示及模型预测功能。同时展望了多模态标注、主动学习与边缘计算协同等未来发展方向。; 适合人群:具备前端开发基础、熟悉JavaScript和浏览器机制,有一定AI模型应用经验的计算机相关专业本科生或研究生,尤其适合将浏览器扩展与人工智能结合进行毕业设计的学生。; 使用场景及目标:①掌握浏览器扩展开发全流程,理解内容脚本、Service Worker与弹出页的通信机制;②实现在浏览器端运行轻量级AI模型(如NER、情感分析)的技术方案;③构建可用于真实场景的数据标注工具,提升标注效率并探索主动学习、协同标注等智能化功能。; 阅读建议:建议结合代码实例搭建开发环境,逐步实现标注功能并集成本地模型推理。重点关注模型轻量化、内存管理与DOM操作的稳定性,在实践中理解浏览器扩展的安全机制与性能优化策略。
基于Gin+GORM+Casbin+Vue.js的权限管理系统是一个采用前后端分离架构的企业级权限管理解决方案,专为软件工程和计算机科学专业的毕业设计项目开发。该系统基于Go语言构建后端服务,结合Vue.js前端框架,实现了完整的权限控制和管理功能,适用于各类需要精细化权限管理的应用场景。 系统后端采用Gin作为Web框架,提供高性能的HTTP服务;使用GORM作为ORM框架,简化数据库操作;集成Casbin实现灵活的权限控制模型。前端基于vue-element-admin模板开发,提供现代化的用户界面和交互体验。系统采用分层架构和模块化设计,确保代码的可维护性和可扩展性。 主要功能包括用户管理、角色管理、权限管理、菜单管理、操作日志等核心模块。用户管理模块支持用户信息的增删改查和状态管理;角色管理模块允许定义不同角色并分配相应权限;权限管理模块基于Casbin实现细粒度的访问控制;菜单管理模块动态生成前端导航菜单;操作日志模块记录系统关键操作,便于审计和追踪。 技术栈方面,后端使用Go语言开发,结合Gin、GORM、Casbin等成熟框架;前端使用Vue.js、Element UI等现代前端技术;数据库支持MySQL、PostgreSQL等主流关系型数据库;采用RESTful API设计规范,确保前后端通信的标准化。系统还应用了单例模式、工厂模式、依赖注入等设计模式,提升代码质量和可测试性。 该权限管理系统适用于企业管理系统、内部办公平台、多租户SaaS应用等需要复杂权限控制的场景。作为毕业设计项目,它提供了完整的源码和论文文档,帮助学生深入理解前后端分离架构、权限控制原理、现代Web开发技术等关键知识点。系统设计规范,代码结构清晰,注释完整,非常适合作为计算机相关专业的毕业设计参考或实际项目开发的基础框架。 资源包含完整的系统源码、数据库设计文档、部署说明和毕
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值