mybatis实现数据库的单表增删改查
一.简介:
MyBatis的前身是iBATIS,2010年,核心开发团队决定离开Apache软件基金会,并且将iBATIS改名为MyBatis。
MyBatis支持自定义SQL查询、存储过程和高级映射的持久层框架,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。MyBatis可以使用XML或注解进行配置和映射,MyBatis通过将参数映射到配置的SQL形成最终执行的SQL语句,最后将执行 SQL的结果映射成Java对象返回。
与其他的0RM (对象关系映射)框架不同,MyBatis并没有将Java对象与数据库表关联起 来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存 储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数 据库进行操作,或者要完全控制SQL的执行,MyBatis将会是一个不错的选择。
与JDBC相比,MyBatis简化了相关代码,SQL语句在一行代码中就能执行。MyBatis提供 了一个映射引擎,声明式地将SQL语句的执行结果与对象树映射起来。通过使用一种内建的类 XML表达式语言,SQL语句可以被动态生成。
MyBatis支持声明式数据缓存(declarative data caching)»当_条SQL语句被标记为"可缓 存”后,首次执行它时从数据库获取的所有数据会被存储在高速缓存中,后面再执行这条语句 时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认情况下基于Java HashMap的缓存实现,以及用于与OSCache、Ehcache, Hazelcast和Memcached连接的默认连 接器,同时还提供了 API供其他缓存实现使用。
MyBatis 官方 GitHub 地址为 https://github.com/mybatiso 在官方 GitHub 中可以看到 MyBatis 的多个子项目。在本书中,我们将学习以下内容。
•mybatis-3 (https://github.com/mybatis/mybatis-3): MyBatis 源码,也是本书中主要讲解 和使用的内容。
•generator (https://github.com/mybatis/generator):代码生成器,可以生成一些常见的基本 方法,提高工作效率。
•ehcache-cache(https://github.com/mybatis/ehcache-cache):默认集成 Ehcache 的缓存实现。
•redis-cache (https://github.com/mybatis/redis-cache):默认集成 Redis 的缓存实现。
二.简易demo
实体层:
package sr.demo3.mp.bd_user.entity; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import java.util.List; import lombok.*; import sr.demo.mp.sr_detail_demo.entity.SrDetailDemo; import sr.demo3.mp.sr_xxzx_user.entity.SrXxzxUser; /** * @author tcc * @description 业务子表实体类 * @create 2022-07-12 20:43:13 */ @Data @Builder @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = false) @TableName("bd_user") public class BdUser implements Serializable { private static final long serialVersionUID = 1L; @TableId("USERID") private BigDecimal userid; @TableField("UTYPE") private BigDecimal utype; @TableField("UDNODE") private String udnode; @TableField("UXNODE") private String uxnode; @TableField("UBM") private String ubm; @TableField("UXM") private String uxm; @TableField("USERNAME") private String username; @TableField("USERPASS") private String userpass; }
1.实现单条数据插入
public boolean inserUser(ServiceData serviceData){ BdUser bdUser = BdUser.builder().uxm(serviceData.getParameter("uxm")).usfz(serviceData.getParameter("usfz")).userid(BigDecimal.valueOf(KeyUtils.nextId())).build(); return this.insert(bdUser); }
2.实现单条数据更新
/** * 更新用户 * @param serviceData * @return */ public boolean updateNameById(ServiceData serviceData){ BdUser bdUser = selectByIdOnWrapper(serviceData.getParameter("userid")); bdUser.setUxm(serviceData.getParameter("uxm")); return this.updateById(bdUser); } /** * 适用wrapper查询 * @param userid * @return */ public BdUser selectByIdOnWrapper(String userid){ QueryWrapper<BdUser> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("userid",userid).eq("uisuse","1").eq("uisdel","0"); return selectOne(queryWrapper); }
3.单表查询
mapper层
import org.apache.ibatis.annotations.Select; import sr.demo.mp.sr_main_demo.entity.SrMainDemo; import sr.demo3.mp.bd_user.entity.BdUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; /** * @author tcc * @description 业务子表Mapper接口 * @create 2022-07-12 20:43:13 */ public interface BdUserMapper_tcc extends BaseMapper<BdUser> { List<BdUser> selectByUserid(String userid); //xml单表查询 @Select("select count(1) as count from bd_user where userid = #{userid}")//xml注解查询 int selectCountById(String userid); }
xml配置
<select id="selectByUserid" resultType="sr.demo3.mp.bd_user.entity.BdUser"> select * from bd_user where uisuse = 1 and uisdel = 0 and userid like concat(#{userid},'%') </select>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix