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>

 

posted @   武魂95级蓝银草  阅读(187)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示