SpringBoot入门-21(springboot集成mybatis注解形式增删查改properties配置,利用@Provider实现动态SQL)

本文介绍了一个基于Spring Boot的猫猫管理系统实现,通过四个主要模块:控制器(CatController)、服务层(CatService)、Mapper接口(CatMapper)及SQL提供者(CatSqlProvider),实现了猫猫数据的增删改查功能。

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

系列教程都是从网络上收集和本人的理解所编辑而成,仅供广大爱好者学习所用,请尊重本人的劳动成果。欢迎评论指正和转帖!(请保留连接谢谢!)



一、CatController.java

package com.fs;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CatController {

    @Autowired
    private CatService catService;

    @RequestMapping("/save")
    public Cat save() {
        Cat cat = new Cat();
        cat.setCat_name("王武");
        cat.setCat_age(11);
        catService.save(cat);
        return cat;
    }

    @RequestMapping("/update")
    public Cat update() {
        Cat cat = new Cat();
        cat.setId(2);
        cat.setCat_name("wangwu");
        cat.setCat_age(11);
        catService.update(cat);
        return cat;
    }

    @RequestMapping("/delete")
    public Cat delete() {
        Cat cat = new Cat();
        cat.setId(2);
        catService.delete(cat);
        return cat;
    }

    @RequestMapping("/select")
    public List<Cat> select(Cat cat) {
        return catService.select(cat);
    }

    @RequestMapping("/select2")
    public List<Cat> select2(Cat cat) {
        return catService.select2(cat);
    }

}


二、CatService.java

package com.fs;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class CatService {

    @Autowired
    private CatMappper catMappper;

    @Transactional // 添加事务.
    public void save(Cat cat) {
        catMappper.save(cat);
    }

    @Transactional // 添加事务.
    public void update(Cat cat) {
        catMappper.update(cat);
    }

    @Transactional // 添加事务.
    public void delete(Cat cat) {
        catMappper.delete(cat);
    }

    public List<Cat> select(Cat cat) {
        return catMappper.select(cat);
    }

    public List<Cat> select2(Cat cat) {
        return catMappper.select2(cat);
    }
}


三、CatMappper.java

package com.fs;

import java.util.List;

import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;

public interface CatMappper {

    @InsertProvider(type = CatSqlProvider.class, method = "save")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") // id自动增长
    @Results({ @Result(property = "updateTime", column = "update_time") })
    public void save(Cat cat);

    @UpdateProvider(type = CatSqlProvider.class, method = "update")
    @Results({ @Result(property = "updateTime", column = "update_time") })
    public void update(Cat cat);

    @DeleteProvider(type = CatSqlProvider.class, method = "delete")
    @Results({ @Result(property = "updateTime", column = "update_time") })
    public void delete(Cat cat);

    @SelectProvider(type = CatSqlProvider.class, method = "select")
    @Results({ @Result(property = "updateTime", column = "update_time") })
    public List<Cat> select(Cat cat);

    @SelectProvider(type = CatSqlProvider.class, method = "select2")
    @Results({ @Result(property = "updateTime", column = "update_time") })
    public List<Cat> select2(Cat cat);

}


四、CatSqlProvider.java

package com.fs;

import org.apache.ibatis.jdbc.SQL;

public class CatSqlProvider {

    public String select(Cat cat) {
        StringBuffer sql = new StringBuffer("select * from cat where 1=1 ");

        if (cat.getCat_name() != null) {
            sql.append("and cat_name = #{cat_name}");
        } else if (cat.getCat_age() != 0) {
            sql.append("and cat_age = #{cat_age}");
        }

        return sql.toString();
    }

    public String select2(Cat cat) {
        return new SQL() {

            {
                SELECT("id,cat_name,cat_age");
                FROM("cat");
                if (cat.getCat_name() != null) {
                    WHERE("cat_name = #{cat_name}");
                } else if (cat.getCat_age() != 0) {
                    WHERE("cat_age = #{cat_age}");
                }
            }
        }.toString();
    }

    public String save(Cat cat) {
        return new SQL() {

            {
                INSERT_INTO("cat");
                VALUES("cat_name", "#{cat_name}");
                VALUES("cat_age", "#{cat_age}");
            }
        }.toString();

    }

    public String update(Cat cat) {
        return new SQL() {

            {
                UPDATE("cat");
                if (cat.getCat_name() != null) {
                    SET("cat_name = #{cat_name}");
                } else if (cat.getCat_age() != 0) {
                    SET("cat_age = #{cat_age}");
                }
                WHERE("id = #{id}");
            }
        }.toString();
    }

    public String delete(Cat cat) {
        return new SQL() {

            {
                DELETE_FROM("cat");
                WHERE("id = #{id}");
            }
        }.toString();
    }
}


五、其它和前面项目一样

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值