(三)mybatisPlus自定义Sql语句

简介: mybatisPlus自定义Sql语句

mybatisPlus自定义Sql语句

前言:

能够使mybatis-plus像mybatis一样在xml中写SQL

前提是原本可以在项目中正常使用mybatis-plus

😄看mybatisPlus自定义Sql语句操作之前,建议先看

1️⃣Mybatis-plus(MP)中CRUD操作保姆级笔记

2️⃣mybatisPlus实现ActiveRecord(AR)操作笔记


四、自定义sql语句

建数据库表


image.png

实体类

@TableName(value = "dept")
public class Dept extends Model<Dept> {
    @Override
    protected Serializable pkVal() {
        return id;
    }
    /**
     * 设置表的主键,分布式id,使用了雪花算法,字符串类型
     */
   @TableId(value = "id",type = IdType.AUTO)
    private String id;
    private  String deptName;
    private String deptMobile;
    private Integer deptManager;

创建mapper

/**
 * DeptMapper是不需要使用的,MP需要使用DeptMapper获取到数据库的表的信息。
 * 如果不定义DeptMapper, MP会报错, 找不到表的定义信息
 * @author 王恒杰
 */
public interface DeptMapper extends BaseMapper<Dept> {
    /**
     * 添加
     */
    public void insertDept();
    /**
     * 通过id查询
     * @param id
     * @return
     */
   public Dept selectById(Integer id);
    /**
     * 通过姓名查询
     * @param name
     * @return
     */
   public List<Dept> selectByName(String name);
}

新建sql映射xml文件:DeptMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.tjcu.mapper.DeptMapper">
<!--添加-->
    <insert id="insertDept">
    insert into dept values(#{id},#{deptName},#{deptMobile},#{deptManager})
    </insert>
    <!--通过id查询-->
    <select id="selectById" resultType="com.tjcu.entity.Dept">
        select * from dept where id=#{id}
    </select>
    <!--通过姓名查询-->
    <select id="selectById" resultType="com.tjcu.entity.Dept">
        select * from dept where dept_name=#{name}
    </select>
</mapper>

配置xml文件位置:配置application.yml (注意位置一定要对整齐)


image.png

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/plus?useSSL=false&serverTimezone=UTC
    username: root
    password: root
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:com.tjcu/*Mapper.xml

image.png


添加测试

 /* 
 @SuppressWarnings("all"):就是为了不让deptMapper报错
 */
@SuppressWarnings("all")
@RunWith(SpringRunner.class)
@SpringBootTest
public class DeptARTest {
    @Autowired
    private DeptMapper deptMapper;
    /**
     * 添加操作
     */
    @Test
    public void  insertDeptTest(){
        Dept dept = new Dept();
        dept.setDeptName("销售表");
        dept.setDeptMobile("1235678");
        dept.setDeptManager(2);
       deptMapper.insertDept(dept);
    }


image.png

添加日志


image.png

通过id查询

  /**
     * 查询操作
     */
    @Test
    public void  selectDeptTest(){
        Dept dept = new Dept();
        Dept dept1 = deptMapper.selectById(1);
        System.out.println(dept1);
    }

ID查询日志


image.png

通过姓名查询

    /**
     * 查询操作
     */
    @Test
    public void  selectDeptTest(){
        Dept dept = new Dept();
        List<Dept> depts = deptMapper.selectByName("销售表");
        System.out.println(depts);
    }

通过姓名查询日志

image.png

相关文章
|
6天前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
19天前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
27 10
|
2月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
3月前
|
SQL Java 数据库连接
Mybatis系列之 Error parsing SQL Mapper Configuration. Could not find resource com/zyz/mybatis/mapper/
文章讲述了在使用Mybatis时遇到的资源文件找不到的问题,并提供了通过修改Maven配置来解决资源文件编译到target目录下的方法。
Mybatis系列之 Error parsing SQL Mapper Configuration. Could not find resource com/zyz/mybatis/mapper/
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
43 1
|
3月前
|
SQL Java 数据库连接
Mybatis系列之 动态SQL
文章详细介绍了Mybatis中的动态SQL用法,包括`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<trim>`和`<foreach>`等元素的应用,并通过实际代码示例展示了如何根据不同条件动态生成SQL语句。
|
3月前
|
SQL Java 关系型数据库
SpringBoot 系列之 MyBatis输出SQL日志
这篇文章介绍了如何在SpringBoot项目中通过MyBatis配置输出SQL日志,具体方法是在`application.yml`或`application.properties`中设置MyBatis的日志实现为`org.apache.ibatis.logging.stdout.StdOutImpl`来直接在控制台打印SQL日志。
SpringBoot 系列之 MyBatis输出SQL日志
|
3月前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
3月前
|
前端开发 开发者
Vaadin Grid的秘密武器:打造超凡脱俗的数据展示体验!
【8月更文挑战第31天】赵萌是一位热爱UI设计的前端开发工程师。在公司内部项目中,她面临大量用户数据展示的挑战,并选择了功能强大的Vaadin Grid来解决。她在技术博客上分享了这一过程,介绍了Vaadin Grid的基本概念及其丰富的内置功能。通过自定义列和模板,赵萌展示了如何实现复杂的数据展示。
38 0
|
3月前
|
SQL 开发框架 .NET
深入解析Entity Framework Core中的自定义SQL查询与Raw SQL技巧:从基础到高级应用的全面指南,附带示例代码与最佳实践建议
【8月更文挑战第31天】本文详细介绍了如何在 Entity Framework Core (EF Core) 中使用自定义 SQL 查询与 Raw SQL。首先,通过创建基于 EF Core 的项目并配置数据库上下文,定义领域模型。然后,使用 `FromSqlRaw` 和 `FromSqlInterpolated` 方法执行自定义 SQL 查询。此外,还展示了如何使用 Raw SQL 进行数据更新和删除操作。最后,通过结合 LINQ 和 Raw SQL 构建动态 SQL 语句,处理复杂查询场景。本文提供了具体代码示例,帮助读者理解和应用这些技术,提升数据访问层的效率和灵活性。
153 0