【Java闭关修炼】MyBatis-构建SQL语句

【Java闭关修炼】MyBatis-构建SQL语句

简单介绍

在这里插入图片描述

查询功能实现

  • sql类
package com.itheima.sql;

import org.apache.ibatis.jdbc.SQL;

public class ReturnSql {

    // 定义方法 返回查询的sql语句
    public String getSelectAll(){
        return new SQL(){
            {
                SELECT("*");
                FROM("student");
            }
        }.toString();
    }
}


  • StudentMapper
package com.itheima.mapper;

import com.itheima.bean.Student;
import com.itheima.sql.ReturnSql;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface  StudentMapper {

    // 映射接口文件

    // 注解操作 实现接口对象的创建  不需要为每一个接口写xml映射文件
//    @Select("SELECT * FROM student")
    @SelectProvider(type = ReturnSql.class,method = "getSelectAll")
    public List<Student> selectAll();

    // 新增功能
    @Insert("INSERT INTO student VALUES (#{id},#{name},#{age}")
    public abstract Integer insert(Student stu);

    // 修改功能
    @Update("UPDATE student SET name = #{name} ,age = #{age} WHERE id = #{id}")
    public abstract Integer update(Student stu);

    // 删除功能
    @Delete("Delete FROM student WHERE id = #{id}")
    public abstract Integer delete(Integer id);
}


  • 测试类
package com.itheima.test;

import com.itheima.bean.Student;
import com.itheima.mapper.StudentMapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class Test01 {
    @Test
    public void selectAll() throws IOException {
        // 加载核心配置文件
        InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");

        // 获取sqlSession对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(is);
        // 通过工厂对象获取sqlSession
        SqlSession sqlSession = build.openSession(true);
        
        // 获取StudentMapper接口实现对象
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        // 调用实现类对象的方法  接受结果

        List<Student> students = mapper.selectAll();

        for (Student student : students) {
            System.out.println(student);
        }

        sqlSession.close();
        is.close();
    }
}


新增功能实现

在这里插入图片描述

  • 新增sql语句
// 定义方法  返回新增的sql语句
    public String getInsert(Student stu){

        // 语句 括号里面写参数
        return new SQL(){
            {
                INSERT_INTO("student");
                INTO_VALUES("#{id},#{name},#{age}");
            }
        }.toString();
    }

  • StudentMapper
    @InsertProvider(type = ReturnSql.class,method = "getInsert")
    public abstract Integer insert(Student stu);

修改功能实现

在这里插入图片描述

  • StudentMapper
    // 修改功能
//    @Update("UPDATE student SET name = #{name} ,age = #{age} WHERE id = #{id}")
    @UpdateProvider(type = ReturnSql.class,method = "getUpdate")
    public abstract Integer update(Student stu);

  • update
    public String getUpdate(Student stu){
        return new SQL(){
            {
                UPDATE("student");
                SET("name = #name","age = #{age}");
                WHERE("id=#{id}");
            }
        }.toString();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mybatis-Plus是一个基于Mybatis的增强工具,它简化了Mybatis的使用方式,提供了更加易用的API和更强大的功能。在使用Mybatis-Plus编SQL语句时,我们可以进行一些优化来提高性能和效率。 首先,可以通过使用合适的索引来优化SQL语句。索引可以加快查询速度,减少数据库的查询时间。需要注意的是,在创建索引时,要根据实际场景和查询需求选择适当的列进行索引,避免过多或冗余的索引。 其次,可以使用合适的分页查询方式进行优化。在查询大量数据时,可以通过分页查询的方式减少返回的数据量,提高查询效率。Mybatis-Plus提供了PageHelper插件,可以方便地进行分页查询。 另外,可以通过合理的SQL语句和设计来优化查询性能。避免在查询语句中使用通配符进行模糊查询,因为模糊查询会增加数据库的查询负担。如果查询条件中的某个字段有固定的值,可以将其为精确查询条件,而不是使用模糊查询。 此外,还可以对需要查询的字段进行筛选,只选择需要的字段,避免返回多余的数据,减少网络传输和查询时间。 最后,为了避免SQL注入攻击,需要使用参数绑定的方式传递参数,而不是直接拼接参数到SQL语句中。这样可以避免特殊字符对SQL语句的破坏和安全问题。 总之,通过合理使用Mybatis-Plus提供的功能和技巧,我们可以对SQL语句进行优化,提高查询性能和效率。同时,还需要根据具体业务场景和需求进行调整和优化,持续改进和优化SQL语句的编方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少写代码少看论文多多睡觉

求打赏,求关注,求点赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值