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

一些做设计素材的网站网站后台要求

一些做设计素材的网站,网站后台要求,福建建设工程交易网站,在线制作图片视频MyBatis与MyBatis-Plus深度分析 一、MyBatis原理与基础 1. MyBatis核心原理 MyBatis是一个半自动ORM框架,主要原理包括: SQL与代码分离:通过XML或注解配置SQL语句动态SQL:提供if、choose、foreach等标签实现动态SQL结果集映射…

MyBatis与MyBatis-Plus深度分析

一、MyBatis原理与基础

1. MyBatis核心原理

MyBatis是一个半自动ORM框架,主要原理包括:

  • SQL与代码分离:通过XML或注解配置SQL语句
  • 动态SQL:提供if、choose、foreach等标签实现动态SQL
  • 结果集映射:将数据库结果集自动映射到Java对象
  • 一级/二级缓存:提供缓存机制提高性能

2. MyBatis基础知识点

核心组件

  • SqlSessionFactory:创建SqlSession的工厂
  • SqlSession:执行SQL的核心接口
  • Mapper接口:定义数据库操作方法
  • Mapper XML:编写SQL语句的配置文件

关键特性

  • 参数映射(#{}, ${})
  • 结果映射(resultMap)
  • 动态SQL标签
  • 插件机制

3. MyBatis简单案例

// Mapper接口
public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User getUserById(int id);@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")@Options(useGeneratedKeys = true, keyProperty = "id")void insertUser(User user);
}// 实体类
public class User {private Integer id;private String name;private String email;// getters/setters
}// 使用示例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.getUserById(1);System.out.println(user.getName());
}

二、MyBatis-Plus原理与增强

1. MyBatis-Plus核心原理

MyBatis-Plus在MyBatis基础上增强:

  • 自动CRUD:内置通用Mapper,减少基础SQL编写
  • 条件构造器:通过Lambda表达式构建查询条件
  • 代码生成器:自动生成Entity、Mapper等代码
  • 分页插件:简化分页操作
  • 性能分析插件:输出SQL执行性能

2. MyBatis-Plus基础知识点

核心特性

  • 通用CRUD操作
  • Lambda表达式查询
  • 主键策略支持
  • 全局配置
  • 乐观锁支持
  • SQL注入器

与MyBatis主要区别

特性MyBatisMyBatis-Plus
CRUD操作需手动编写内置通用方法
条件构造需写SQLLambda表达式
代码生成需第三方工具内置生成器
分页需插件内置分页插件
性能分析需配置内置插件

3. MyBatis-Plus简单案例

// 实体类
@Data
@TableName("users")
public class User {@TableId(type = IdType.AUTO)private Long id;private String name;private String email;
}// Mapper接口
public interface UserMapper extends BaseMapper<User> {// 已继承基本CRUD方法
}// 服务层
@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getUsersByName(String name) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.lambda().eq(User::getName, name);return userMapper.selectList(queryWrapper);}
}// 使用Lambda查询
List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getName, "张").gt(User::getAge, 18)
);

三、综合对比与选择建议

1. 适用场景

  • MyBatis适用场景
    • 需要精细控制SQL
    • 复杂查询和存储过程调用
    • 已有MyBatis项目维护
  • MyBatis-Plus适用场景
    • 快速开发CRUD功能
    • 需要减少样板代码
    • 新项目开发

2. 性能考虑

  • MyBatis-Plus在简单CRUD上效率更高(减少代码量)
  • 复杂SQL场景两者性能相当(最终都转为MyBatis执行)
  • MyBatis-Plus的Lambda查询会转换为MyBatis的SQL,无额外性能损耗

3. 综合案例展示

复杂查询+分页案例

// MyBatis实现
@Select("SELECT * FROM users WHERE name LIKE #{name} AND age > #{age} LIMIT #{offset}, #{size}")
List<User> findUsers(@Param("name") String name, @Param("age") int age,@Param("offset") int offset,@Param("size") int size);// MyBatis-Plus实现
Page<User> page = new Page<>(1, 10); // 第1页,每页10条
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.like(User::getName, "张").gt(User::getAge, 18);
IPage<User> userPage = userMapper.selectPage(page, wrapper);

动态更新案例

// MyBatis实现
@Update("<script>" +"UPDATE users " +"<set>" +"  <if test='name != null'>name=#{name},</if>" +"  <if test='email != null'>email=#{email},</if>" +"</set>" +"WHERE id=#{id}" +"</script>")
void updateUserSelective(User user);// MyBatis-Plus实现
userMapper.update(null, Wrappers.lambdaUpdate(User.class).set(User::getName, "新名字").eq(User::getId, 1));

四、总结

  1. MyBatis提供更精细的SQL控制,适合复杂场景
  2. MyBatis-Plus大幅简化CRUD操作,提高开发效率
  3. 两者可以结合使用,MyBatis-Plus处理简单操作,复杂SQL仍可用原生MyBatis方式
  4. 新项目推荐使用MyBatis-Plus,可显著减少样板代码

根据项目需求和团队熟悉程度选择合适的框架,大型项目中也可以两者混合使用,兼顾开发效率和灵活性


文章转载自:

http://8FRnXtHv.jjxxm.cn
http://yCnxaYHw.jjxxm.cn
http://Gp8SlkWP.jjxxm.cn
http://KK3dAtNj.jjxxm.cn
http://LDXAzKFN.jjxxm.cn
http://4NoBRbrX.jjxxm.cn
http://dWYwwGl9.jjxxm.cn
http://isb1ni3u.jjxxm.cn
http://NG2fIKFy.jjxxm.cn
http://r3iQiSi5.jjxxm.cn
http://bGZU7MTX.jjxxm.cn
http://D7s6a7I4.jjxxm.cn
http://f1Jipmne.jjxxm.cn
http://jJsjcNoe.jjxxm.cn
http://W0duJhka.jjxxm.cn
http://m24kkr7R.jjxxm.cn
http://hThMFkBC.jjxxm.cn
http://lyYR5Dsp.jjxxm.cn
http://3lsAqq2B.jjxxm.cn
http://e0jBODzd.jjxxm.cn
http://rhVQrKC5.jjxxm.cn
http://vu8F0jdz.jjxxm.cn
http://w1l4XKGU.jjxxm.cn
http://oJHRi9TI.jjxxm.cn
http://XEQKySwl.jjxxm.cn
http://wNJM0rwx.jjxxm.cn
http://EIekeQWW.jjxxm.cn
http://VephEWGp.jjxxm.cn
http://EsIVHkfg.jjxxm.cn
http://yZgL7Cer.jjxxm.cn
http://www.dtcms.com/wzjs/674408.html

相关文章:

  • 格瑞特网站建设蒙自网站开发
  • seo网站优化培训要多少钱wordpress 播放器插件怎么用
  • 网站可以做二维码吗最新备案域名
  • 开一家网站建设公司怎样在百度里面做网站要多少钱
  • 福州企业网站开发进行网站推广有哪些常用方法
  • linux如何架设网站上海装修公司排名榜十大品牌
  • 如何 建公司网站网站做推广页需要什么软件
  • 获取网站访客qq号码微网站 一键拨号
  • 广州网站制作十年乐云seo合肥++网站建设
  • 哪些网站可以做顺风车淮安做网站找哪家好
  • 怎样查看网站备案号德阳建设网站
  • 找别人做的淘客网站 会不会有问题seo网站推广全程实例
  • 网站模版html2345网页游戏
  • 建设通网站会员共享密码网站建设 乐视
  • 深圳微信网站建设武钢建设公司网站
  • 阿里云一个域名做两个网站重庆免费网站制作
  • 浙江网站seo网站如何做数据库
  • 户外用品网站建设项目背景响应式网站建设价格
  • 郴州建设网站的公司重庆定制网站制作价格
  • 开封北京网站建设一个网站添加多个网址
  • 网站的建站流程织梦 xml 网站地图
  • 四川建设企业网站wordpress adsense
  • 代理会计公司网站模版商城网站模板下载
  • 公司网站建设哪个最好wordpress模版使用教程
  • 中国廉政建设网网站15年做哪些网站能致富
  • 怎么做网站数据库备份重庆3号线
  • 网站建设期的网站案例网站建设有哪些知识点
  • 网站备案找回wordpress旅游模板
  • 创什么网站吸引人太原做网站培训
  • 深圳做网站最oa办公系统软件多少钱