Mybatis-plus 关于选定数据库表以及自定义SQL语句的用法

本文详细介绍了从Mybatis迁移到Mybatis-Plus的过程,包括如何在Service层使用注解定位数据库,以及如何在Mapper接口中定义SQL操作,提供了一种过渡期间的实用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近要迁移到Mybatis-Plus上,但是我不怎么会迁移,Mybatis-Plus的用法也不清楚,有点一头雾水

首先。之前我在用Mybatis的时候,首先通过Url访问到Controller中的方法;

Controller中的方法调用了Service中的业务方法;

在Service中调用了mapper定义的接口,在mapper.xml中就写了sql语句,mapper作为一个桥梁一样的东西,Service中调用了,xml中定义了具体的SQL语句,如下面的代码:

public Long submitContact(Long projectId, ContactClass contactClass){
        Long createdContactId = SnowflakeIdWorker.getInstance().nextId();
        contactClass.setPkContactId(createdContactId);

        int createdRow = (int) dataSourceManager.execute(CodecUtil.longToHexStr(projectId), MailMapper.class, "createContact", contactClass);

        return createdContactId;
    }

通过DataSourceManager中的execute,使用MailMapper这个接口文件,并找到createContact这个方法,传入对应的参数来执行相应的SQL语句:

而且在Mybatis中,我们可以在SQL语句中直接通过 #{param1},#{param2}这种方法来获取参数列表中的参数,当然了,如果传入的是一个对象的话,我们可以用对象的成员变量的

有人写好的Mybatis-Plus的config了,但是我在寻思到底是什么样定位这些表和操作的呢?

经过我的成功操作,我发现了:

首先,我们在Controller中调用Service,这是一样的;

到了Service中;我在执行的方法前面添加了:

    @Override
    @DS("#projectId")
    public Long submitContact(Long projectId, ContactClass contactClass){
        Long createdContactId = SnowflakeIdWorker.getInstance().nextId();
        contactClass.setPkContactId(createdContactId);

//        int createdRow = (int) dataSourceManager.execute(CodecUtil.longToHexStr(projectId), MailMapper.class, "createContact", contactClass);
        int createdRow = mailMapper.createContact(contactClass);
        return createdContactId;
    }

这里,我们通过@DS定位其具体要操作的数据库,我这里通过projectId定位了项目的数据库

在mapper中,我就有自己写的一个借口方法:createContact

这个接口方法看上去啥实现都没有,但是这里就用上了MailMapper,xml中的实现,也就是说,连接的操作从上面的在execute中直接写“createContact”变成了通过mailMapper中的直接引用的方法来使用了

通过这样的方法,我们就可以自定义使用Mybatis-Plus的方法了,虽然还有xml文件,但是在过渡的时候也是可以的。

总结一下:就是我们把具体的Mapper中需要实现的SQL语句写在XML文件中,但是我们在使用的时候,通过了Mapper的接口方法来引用这个SQL语句,而Mapper的方法则是通过xml中的id来连接上的。通过引用来连接相应的SQL语句,还是比原生Mybatis那一串的execute看的要简洁一点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值