我们相信:世界是美好的,你是我也是。 来玩一下解压小游戏吧!

继续聚焦于mybatis中的mapper文件的写法。因为mybatis是以自由写sql语句的,所以关于sql语句写那里的问题,就分为两种写法了。其余相关代码,用法一致。

苏南大叔:SpringBoot开发,MyBatis中Mapper的两种写法 - springboot-mapper
SpringBoot开发,MyBatis中Mapper的两种写法(图3-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10openjdk@23.0.2IntelliJ IDEA 2024.3.4.1maven@3.3.2spring boot@2.5.4java@17mysql@5.7.26MyBatis@2.2.0

前置阅读

本文相关的spring boot系列文章有:

在上一篇文章里面,苏南大叔已经叙述了mybatis的基本用法。MyBatismapper文件就相当于JPArepository文件。基于上述文章里面的表述,再讲述MyBatismapper文件的两种写法。

合二为一的java文件【推荐】

src\main\java\com\example\demo\mapper\UserMapper.java:

package com.example.demo.mapper;

import com.example.demo.model.User;
import org.apache.ibatis.annotations.*;
import java.util.List;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user")
    List<User> findAll();

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);

    @Select("SELECT * FROM user WHERE name = #{name}")
    User findByName(String name);

    @Insert("INSERT INTO user(name, password) VALUES(#{name}, #{password})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insert(User user);

    @Update("UPDATE user SET name = #{name}, password = #{password} WHERE id = #{id}")
    void update(User user);

    @Delete("DELETE FROM user WHERE id = #{id}")
    void deleteById(Long id);

    @Select("SELECT COUNT(*) FROM user")
    int count();
}
Java

苏南大叔:SpringBoot开发,MyBatis中Mapper的两种写法 - 合并写法
SpringBoot开发,MyBatis中Mapper的两种写法(图3-2)

分开描述的java+xml组合

src\main\java\com\example\demo\mapper\UserMapper.java:

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface UserMapper {
    List<User> findAll();
    User findById(Long id);
    User findByName(String name);
    void insert(User user);
    void update(User user);
    void deleteById(Long id);
    int count();
}
Java

src\main\resources\mappers\UserMapper.xml

<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="findAll" resultType="com.example.demo.entity.User">
        SELECT * FROM user
    </select>

    <select id="findById" parameterType="long" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <select id="findByName" parameterType="string" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE name = #{name}
    </select>

    <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user (name, password) VALUES (#{name}, #{password})
    </insert>

    <update id="update" parameterType="com.example.demo.entity.User">
        UPDATE user SET name = #{name}, password = #{password} WHERE id = #{id}
    </update>

    <delete id="deleteById" parameterType="long">
        DELETE FROM user WHERE id = #{id}
    </delete>

    <select id="count" resultType="int">
        SELECT COUNT(*) FROM user
    </select>
</mapper>
XML

苏南大叔:SpringBoot开发,MyBatis中Mapper的两种写法 - 分开写mapper功能
SpringBoot开发,MyBatis中Mapper的两种写法(图3-3)

而且,这个组合下,还需要做个配置:
src\main\resources\application.properties

mybatis.mapper-locations=classpath*:mappers/*.xml
Ini

结语

除了Mapper文件有分歧外,其它的代码和上一篇文章相比,都一样。至于选择一个.java文件,还是两个文件.java+.xml,就看大家的实际需求了。个人觉得,选择独立的.java文件就挺好。

更多苏南大叔的java经验文字,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   java