【Spring Boot】3.7 使用注解自定义MyBatis-Plus的Mapper接口

一、先是修改service接口将要添加的方法写进去

public interface IMachineService extends IService<Machine> {

    public Machine getOneByIdWithFactoryName(String machineId);

}

接口定义起来就很简单,就是把方法名称 入参 返回值类型 定义好就OK了

二、修改serviceImpl的实现方法


    @Resource
    private MachineMapper machineMapper;

    @Override
    public Machine getOneByIdWithFactoryName(String machineId) {
        return machineMapper.getOneByIdWithFactoryName(machineId);
    }

这一步起始就是调用MyBatis的Mapper,这个Mapper的实现是MyBatis(Plus 有没有不确定)完成的。
这时候方法应该是红的,我们直接Ctrl+enter 创建这个红色的方法,会自动到.mapper包里相应的interface里创建这个方法

三、重要的来了,需要我们在方法上加上注解

public interface MachineMapper extends BaseMapper<Machine> {

    @Select("select * , (select name from factory where id = factory_id) as factory_name from machine where id = #{machineId}")
    Machine getOneByIdWithFactoryName(String machineId);
}

除了Select 还有很多种注解,根据实际情况选择服用即可。

还有一些其他的常用的知识

// 在注解中使用方法传入的参数,在上边的例子里也展示了
// #{machineId}

// 还支持if else 的判断 用法如下

    @Select("" +
            "<script>" +
            "select  " +
            "m_id as id ," +
            "m_name as name, " +

            "m_order_key as order_key, " +

            "(select count(*) from xdy_purview where module_id = m_id and disable = 0) as quote, " +

            "system_id as system_id, " +
            "(select s_name from xdy_system where s_id = ps.system_id) as system_name, " +

            "create_user_id, " +
            "update_user_id, " +
            "create_time, " +
            "update_time, " +
            "(select u_name from xdy_user where u_id = ps.create_user_id) as create_user_name, " +
            "(select u_name from xdy_user where u_id = ps.update_user_id) as update_user_name " +
            "from xdy_module as ps " +
            "where disable = 0 " +

            "<if test='systemId != &apos;&apos;'>" +
            " and system_id = #{systemId} " +
            "</if>" +

            "order by m_order_key asc" +
            "</script>")

上边的代码要注意尖括号里的内容 如果要使用脚本 就要以script开头和结尾 包裹sql 语句 其中的就是一个判断
if 里的test是一个固定的写法。如果systemId 不等于空,才会把这段sql包含到最终的sql里。

以上就是自定义Mapper的过程, 对于@Select @Inset 等等的注解可以自行了解,包括Script里还有哪些语句 以及 if 还有多少种的判断方式,都可以自行了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值