MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)

简介: MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)

1、前置环境

MyBatis快速入门——第一章、idea的maven配置与demo实例

2、创建【com.item.mapper.模型Mapper.java】文件

创建位置

image.png

编码:

@Param("传递参数标识符")

package com.item.mapper;
import com.item.model.Users;
import org.apache.ibatis.annotations.Param;
public interface UsersMapper {
    /**
     * 根据id查询
     * @param id
     * @return
     */
    Users SelectById(@Param("id")int id);
    /**
     * 根据id查询
     * @param nickName
     * @return
     */
    Users SelectByName(@Param("nickName")String nickName);
}

3、修改【模型Mapper.xml】配置文件

#和$两者含义不同


【#】会把传入的数据都当成一个字符串来处理,会在传入的数据上面加一个双引号来处理。


【$】则是把传入的数据直接显示在sql语句中,不会添加双引号。


<?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.item.mapper.UsersMapper">
    <select id="GetInfo" resultType="Users">
        select * from users
    </select>
    <select id="SelectById" resultType="Users" parameterType="java.lang.Integer">
        select * from users where id=#{id}
    </select>
    <select id="SelectByName" resultType="Users" parameterType="java.lang.String">
        select * from users where nickName like "%${nickName}%"
    </select>
</mapper>

4、测试

测试编码:

package com.item.action;
import com.item.mapper.UsersMapper;
import com.item.model.Users;
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 java.io.IOException;
import java.io.Reader;
public class Action {
    public static void main(String[] args) throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sessionFactory.openSession();
        UsersMapper db = sqlSession.getMapper(UsersMapper.class);
        Users users = db.SelectById(2);
        Sout(users);
        Users users1 = db.SelectByName("龙");
        Sout(users1);
        sqlSession.close();
    }
    /**
     * 输出用
     * @param users
     */
    public static void Sout(Users users){
        System.out.println("编号:"+users.getId());
        System.out.println("创建时间:"+users.getCreateDate());
        System.out.println("昵称:"+users.getNickName());
        System.out.println("性别:"+(users.getSex()==0?"女":"男"));
        System.out.println("年龄:"+users.getAge());
        System.out.println("简介:"+users.getIntroduce());
    }
}


测试成功:

image.png


5、多表联合查询测试

在【模型Mapper.xml】配置文件中添加


 

<select id="GetUserInfo" resultType="UserInfo">
        select
        users.id,
        users.createDate,
        users.nickName,
        users.sex,
        users.age,
        users.introduce,
        userInfo.uid,
        userInfo.phone
        from users inner join userInfo on users.id=userInfo.uid
    </select>

由于没有【UserInfo】类,需要在【model】下创建,为了测试方便,我只添加了【phone】列


package com.item.model;
public class UserInfo extends Users{
    private int uid;
    private String phone;
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

在【com.item.mapper.UserMapper.java】文件中添加【查询所有的方法】


package com.item.mapper;
import com.item.model.UserInfo;
import com.item.model.Users;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UsersMapper {
    /**
     * 查询所有
     * @return
     */
    List<UserInfo> GetUserInfo();
    /**
     * 根据id查询
     * @param id
     * @return
     */
    Users SelectById(@Param("id")int id);
    /**
     * 根据id查询
     * @param nickName
     * @return
     */
    Users SelectByName(@Param("nickName")String nickName);
}


由于没有参数,直接遍历就行:

package com.item.action;
import com.item.mapper.UsersMapper;
import com.item.model.UserInfo;
import com.item.model.Users;
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 java.io.IOException;
import java.io.Reader;
import java.util.List;
public class Action {
    public static void main(String[] args) throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sessionFactory.openSession();
        UsersMapper db = sqlSession.getMapper(UsersMapper.class);
        List<UserInfo> userInfos = db.GetUserInfo();
        for (UserInfo u:userInfos) {
            Sout(u);
        }
    }
    /**
     * 输出用
     * @param users
     */
    public static void Sout(UserInfo users){
        System.out.println("编号:"+users.getId());
        System.out.println("创建时间:"+users.getCreateDate());
        System.out.println("昵称:"+users.getNickName());
        System.out.println("性别:"+(users.getSex()==0?"女":"男"));
        System.out.println("年龄:"+users.getAge());
        System.out.println("简介:"+users.getIntroduce());
        System.out.println("手机:"+users.getPhone());
    }
}
相关文章
|
4月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
296 8
|
15天前
|
XML Java 数据库连接
Mybatis实现RBAC权限模型查询
通过对RBAC权限模型的理解和MyBatis的灵活使用,我们可以高效地实现复杂的权限管理功能,为应用程序的安全性和可维护性提供有力支持。
48 5
|
1月前
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
64 3
|
2月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
41 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
2月前
|
SQL Java 数据库连接
MyBatis-Plus快速入门:从安装到第一个Demo
本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。
527 0
MyBatis-Plus快速入门:从安装到第一个Demo
|
3月前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
101 1
|
4月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
6月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
84 11
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
|
3月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
163 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。