首页 > 其他分享 >mybatis入门案例-传参类型和方式

mybatis入门案例-传参类型和方式

时间:2024-10-14 13:49:00浏览次数:8  
标签:传参 username 入门 spring boot user mybatis password User

mybatis传参类型和方式

主要分享一下mybatis的mapper接口参数类型和传参方式,适用于初学者。

直接上代码:

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>
    <url/>

    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>3.0.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

application.yml文件

spring:
  datasource:
    username: root
    password: ******
    url: jdbc:mysql:///数据库名
    driver-class-name: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

实体类:User

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;
    private String username;
    private String password;
    private String email;
}

mapper接口

public interface UserMapper {

    /**
     * 只有一个参数
     * 根据用户id查询用户
     * @param id
     * @return
     */
    User querybyId(Integer id);

    /**
     * 有两个参数
     * 根据用户名和密码查询用户
     * @param username
     * @param password
     * @return
     */
    User querybyUsernameAndPassword(@Param("username") String username, @Param("password") String password);

    /**
     * 有一个对象参数
     * 根据用户对象查询用户
     * @param user
     * @return
     */
    User querybyUser(User user);

    /**
     * 有一个map参数
     * 根据map查询用户
     * @param maps
     * @return
     */
    User querybyMap(Map<String,String> maps);

    /**
     * 有一个list集合参数
     * 批量添加
     * @param users
     */
    void batchInsert(@Param("users") List<User> users);
}

mapper.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.example.demo.mapper.UserMapper">

    <!-- 根据用户ID查询用户 -->
    <select id="querybyId" resultType="com.example.demo.domain.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <!-- 根据用户名和密码查询用户 -->
    <select id="querybyUsernameAndPassword" resultType="com.example.demo.domain.User">
        SELECT * FROM user WHERE username = #{username} AND password = #{password}
    </select>

    <!-- 根据用户对象查询用户 -->
    <select id="querybyUser" resultType="com.example.demo.domain.User">
        SELECT * FROM user WHERE username = #{username} AND password = #{password}
    </select>

    <!-- 根据map查询用户 -->
    <select id="querybyMap" resultType="com.example.demo.domain.User">
        SELECT * FROM user
        <where>
            <if test="'username' !=null">
                AND username = #{username}
            </if>
            <if test="'password' !=null">
                AND password = #{password}
            </if>
        </where>

    </select>

    <!-- 批量添加用户 -->
    <insert id="batchInsert">
        INSERT INTO user (username, password,email) VALUES
        <foreach item="user" index="index" collection="users" open="(" separator="),(" close=")">
            #{user.username}, #{user.password}, #{user.email}
        </foreach>
    </insert>

</mapper>

测试

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    void contextLoads() {

        System.out.println(userMapper.querybyId(1));
    }

    @Test
    void querybyUsernameAndPassword() {
        System.out.println(userMapper.querybyUsernameAndPassword("tom", "123"));
    }

    @Test
    void querybyUser() {
        System.out.println(userMapper.querybyUser(new User(null, "tom", "123", null)));
    }

    @Test
    void querybyMap() {
        System.out.println(userMapper.querybyMap(new HashMap<String, String>(){{
            put("username","tom"); put("password","123");
        }}));
    }

    @Test
    void batchInsert() {
        userMapper.batchInsert(new ArrayList<User>(){{
            add(new User(null,"tom3","123","[email protected]"));
            add(new User(null,"tom4","123","[email protected]"));
        }});
    }

}

完结,撒花! 希望对各位初学者有帮助,感觉点赞关注。

标签:传参,username,入门,spring,boot,user,mybatis,password,User
From: https://blog.csdn.net/QQ903275718/article/details/142916758

相关文章

  • K8s-实战入门-ns、pod、label、deployment
    一、 Namespace(ns)Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分......
  • AI绘画StableDiffusion零基础入门,轻松制作你的赛博Coser,SD图生图全网最强指南
    AI绘画因“赛博Coser”事件大规模破圈,以前只在二次元中存在的角色变成栩栩如生的真人跃出画面,你是否好奇这些老婆们是怎么画出来的?缘起:赛博Coser事件AI绘画第一次大规模破圈源于早前科技博主“勘云工造”使用AI技术创作的一系列作品。他训练的“赛博Coser”......
  • AI绘画StableDiffusion零基础入门—文生图:全面解析AI绘画中提示词的妙用和各种语法,Pro
    AI绘画的一个必不可少的环节就是告诉AI描述画面的Prompt(提示词),但是这种很长很乱、穿插着各种奇怪的数字符号、高深莫测的提示词,究竟在说着什么?难道真的是咒语吗?魔法?咒语?你绝对不曾想到,有生之年竟然能迎来这么一个奇迹时代:画画竟然还能用魔法,岂不是只要会念咒、人人都......
  • AI绘画SD零基础入门到精通教程,新手小白AI扫盲教程,一文搞懂MIdjourney和StableDiffusio
    大家好,我是强哥Midjourney是目前全网最强大的AI绘画平台,用户只需要简单地输入关键词描述,就能获得多幅风格各异的绘画作品,无需任何专业的绘画技能,即刻拥有让人惊叹的艺术创造力。在MidjourneyV5版本之前,用户可以享受免费使用额度,只需要注册一个账户即可在线体验AI绘画。......
  • CTFshow-web入门(1-20)-信息搜集
    信息搜集目录信息搜集web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20web1打开网页发现没有东西查看源代码发现flagflag:ctfshow{c530c49f-f86e-49bc-bc58-8a493b179adb}web2手动添加view-source:flag:ctfshow{7d18c83c......
  • 零基础学习网工第2天 —— 小白入门系列
    零基础学习网工第2天——小白入门系列静态路由手动配置而非动态决定,需要管理员进行手动配置。实验:通过两个路由器实现pc和server的通信PC去往不同的网段需要经过网关,网关需要查路由表,一步步将数据传到目标。实现跨路由器的数据包传递,ip如下图所示。配置PC1的IP、子......
  • 哪个AI写小说工具最推荐?笔灵AI带你快速入门
    在数字时代,创作小说不再局限于传统的笔和纸,而是可以通过先进的技术来辅助和增强。笔灵AI,正是这样一款创新的人工智能写作工具,它旨在帮助作家和创作者们将他们的故事构思转化为生动的文字。让我们一起深入了解笔灵AI的小说创作功能,以及如何一步步使用这些功能来丰富您的创作体验......
  • aardio入门到精通04-标识符及命名规则、局部变量、成员变量、常量
    标识符、局部变量、名字空间、成员变量、importconsole;//一、标识符/*1)标识符是指编程语言中由起标识作用的英文字母、数字或中文字符、以及下划线组成的命名符号一般用来标识用户或系统定义的数据或方法,例如常量名、变量名、函数名等。2)标识符基本规则: -标识符......
  • 什么是大模型?(超详细)大模型从入门到精通,看这一篇就够了!
    大模型的定义大模型是指具有数千万甚至数亿参数的深度学习模型。近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果,如自然语言处理,图片生成,工业数字化等。为了提高模型的性能,研究者们不断尝试增加模型的参数数量,从而诞生了大模型这一概念。大模......
  • Linux从入门到精通-第二章(Linux的基础命令)
    文章目录前言一、linux的目录结构和命令基础1:linux的目录结构2:linux基础命令a:命令基础格式二、基础命令(上)1.ls命令2:cd命令和pwd命令a:切换目录命令cdb:pwd命令4:相对路径绝对路径和特殊路径5:mkdir命令三:基础命令(下)1:touch,cat,more命令a:touch命令b:cat命令c:more命......