当前位置: 首页 > news >正文

google中文搜索引擎入口福州网站设计知名乐云seo

google中文搜索引擎入口,福州网站设计知名乐云seo,网页编程软件叫什么,图书网站开发需求文档模板一、框架定位与核心差异1.1 框架定MyBatis:一款优秀的半自动化持久层框架,专注于SQL灵活性,需手动编写SQL语句和结果映射。MyBatis-Plus(MP):MyBatis的增强工具,在MyBatis基础上只做增强不做改变…

一、框架定位与核心差异

1.1 框架定

  • MyBatis:一款优秀的半自动化持久层框架,专注于SQL灵活性,需手动编写SQL语句和结果映射。
  • MyBatis-Plus(MP):MyBatis的增强工具,在MyBatis基础上只做增强不做改变,旨在简化开发、提高效率。

1.2 核心差异对比

特性MyBatisMyBatis-Plus
CRUD操作需手动编写XML或注解SQL内置通用Mapper/Service,零SQL实现CRUD
条件构造需手动拼接动态SQL(如<if>标签)提供QueryWrapper/LambdaQueryWrapper
分页功能需集成第三方插件(如PageHelper)内置物理分页插件,配置后直接使用
代码生成无内置工具内置代码生成器,支持生成全层代码
主键策略需手动配置支持4种主键策略(含分布式ID生成器)
全局拦截需自定义插件内置全表删除/更新阻断,预防误操作

二、实例代码对比

2.1 基础CRUD操作

MyBatis实现

1. Mapper接口

public interface UserMapper {User selectById(Long id);int insert(User user);int updateById(User user);int deleteById(Long id);
}

2. XML映射文件

<mapper namespace="com.example.mapper.UserMapper"><select id="selectById" resultType="User">SELECT * FROM user WHERE id = #{id}</select><insert id="insert" parameterType="User">INSERT INTO user(name, age) VALUES (#{name}, #{age})</insert><!-- 更新/删除类似 -->
</mapper>
MyBatis-Plus实现

1. Mapper接口(仅需继承BaseMapper)

public interface UserMapper extends BaseMapper<User> {// 无需编写方法,直接继承BaseMapper的CRUD方法
}

2. 调用示例

@Autowired
private UserMapper userMapper;// 查询
User user = userMapper.selectById(1L);// 新增
User newUser = new User();
newUser.setName("张三");
newUser.setAge(20);
userMapper.insert(newUser);// 更新
user.setAge(21);
userMapper.updateById(user);// 删除
userMapper.deleteById(1L);

2.2 条件查询

MyBatis实现(XML动态SQL)
<select id="selectByCondition" parameterType="Map" resultType="User">SELECT * FROM user<where><if test="name != null">AND name LIKE CONCAT('%', #{name}, '%')</if><if test="age != null">AND age > #{age}</if></where>
</select>
MyBatis-Plus实现(条件构造器)
// 普通方式
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张").gt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);// Lambda方式(避免字段名硬编码)
LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.like(User::getName, "张").gt(User::getAge, 18);
List<User> userList = userMapper.selectList(lambdaQuery);

2.3 分页查询

MyBatis实现(需集成PageHelper)
// 配置PageHelper插件
PageHelper.startPage(1, 10);
List<User> userList = userMapper.selectAll();
PageInfo<User> pageInfo = new PageInfo<>(userList);
MyBatis-Plus实现(内置分页插件)

1. 配置分页插件

@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}

2. 使用分页

Page<User> page = new Page<>(1, 10); // 第1页,每页10条
Page<User> resultPage = userMapper.selectPage(page, null);
List<User> userList = resultPage.getRecords();
long total = resultPage.getTotal(); // 总记录数

三、高级特性对比

3.1 主键自动生成

  • MyBatis:需手动配置@GeneratedValue或XML中的useGeneratedKeys
  • MyBatis-Plus:支持4种策略(如雪花算法),通过注解快速配置:
    @TableId(type = IdType.ASSIGN_ID) // 雪花算法ID
    private Long id;
    

3.2 逻辑删除

  • MyBatis:需手动在SQL中添加WHERE deleted=0
  • MyBatis-Plus:通过注解自动实现逻辑删除:
    @TableLogic // 逻辑删除字段(0-未删,1-已删)
    private Integer deleted;
    

3.3 代码生成器

  • MyBatis:无内置工具,需借助第三方插件。
  • MyBatis-Plus:内置代码生成器,支持生成Entity、Mapper、Service、Controller:
    AutoGenerator mpg = new AutoGenerator();
    // 配置数据源、包路径、策略等
    mpg.execute(); // 生成全层代码
    

四、使用场景建议

优先选择MyBatis-Plus的场景

  • 快速开发的中小项目,需减少重复SQL编写。
  • 单表CRUD操作频繁,需提高开发效率。
  • 需要内置分页、逻辑删除等通用功能。

优先选择MyBatis的场景

  • 复杂SQL场景(如多表关联、存储过程),需完全控制SQL。
  • 已有MyBatis项目且无升级必要。
  • 对框架轻量化有严格要求。

五、总结

MyBatis-Plus在MyBatis基础上提供了通用CRUD、条件构造器、分页插件等增强功能,大幅减少样板代码,适合快速开发;而MyBatis更适合需要高度自定义SQL的复杂场景。两者完全兼容,可根据项目需求灵活选择。

http://www.dtcms.com/a/562813.html

相关文章:

  • 做响应式网站从美洲开始做皇帝免费阅读网站
  • 多态的介绍
  • 有没有做美食的小视频网站wordpress如何备份 网站
  • (125页PPT)盐化行业数字化转型规划详细方案(附下载方式)
  • 全站仪为什么要建站彬县网站
  • 学字体网站企业建网站品牌
  • OC母语的Developer对Swift常见问题的整理
  • 网站新闻置顶怎么做做企业品牌网站的公司
  • 网站建设开发团队介绍国外网站问题
  • 大兴网站建设设计公司建设学院网站的通知
  • 西安市建设银行网站网站开发全流程
  • 网站开发项目企划书广州网站建设市场
  • 插件式微服务开发全解析
  • vs215开发python网站开发鲅鱼圈规划建设局网站
  • 厦门服装企业网站推广网站开发的前后端是什么
  • seo网站设计招聘做网站卖别人的软件可以吗
  • 黄金网站软件app大全下载网络技术工程师
  • 成都编程咨询如何突破AI搜索隐形墙?
  • 百度官网认证网站山东省住房和城乡建设厅厅长
  • php协会网站源码网站定制开发上海
  • 怎么用ps做网站图片网络销售面试问题有哪些
  • 谷歌有做网站建设为什么要做seo
  • photoshop网站设计成都保障房中心官方网站
  • 信号与槽(2),geometry/frameGeometry,控件的enabled属性,按钮的press与clicked(bool)信号
  • 网站建设百度贴吧网站备案包括空间内容吗
  • seo网站培训班介绍类网站建设策划书范文
  • 炫酷个人网站c net 做网站好吗
  • 【C++】洛谷P2165括号匹配
  • 拓吧网站自学做网站多长时间
  • 百度收录哪些网站吗专业网站开发公司