Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >10. Mybatis 参数处理

10. Mybatis 参数处理

作者头像
捞月亮的小北
发布于 2024-06-25 07:05:55
发布于 2024-06-25 07:05:55
10000
代码可运行
举报
文章被收录于专栏:捞月亮的小北捞月亮的小北
运行总次数:0
代码可运行

环境准备: 创建模块 ,引入相关依赖 和 配置文件 创建数据库表:t_student ​

​ 向数据库表中填充数据 ​

1. 单个简单类型参数

简单类型包括:

  • byte short int long float double char
  • Byte Short Integer Long Float Double Character
  • String
  • java.util.Date
  • java.sql.Date

通过下面所写代码测试得知,简单类型对于mybatis来说都是可以自动类型识别的:

  • 也就是说对于mybatis来说,它是可以自动推断出ps.setXxxx()方法的。ps.setString()还是ps.setInt()。它可以自动推断。

其实SQL映射文件中的配置比较完整的写法是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<select id="selectByName" resultType="student" parameterType="java.lang.String">
  select * from t_student where name = #{name, javaType=String, jdbcType=VARCHAR}
</select>

其中sql语句中的javaType,jdbcType,以及select标签中的parameterType属性,都是用来帮助mybatis进行类型确定的。不过这些配置多数是可以省略的。因为mybatis它有强大的自动类型推断机制。

  • javaType:可以省略
  • jdbcType:可以省略
  • parameterType:可以省略

如果参数只有一个的话,#{} 里面的内容就随便写了。对于 ${} 来说,注意加单引号。

StudentMapper接口 , 需求:根据name查、根据id查、根据birth查、根据sex查

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.north.mybatis.mapper;

import com.north.mybatis.pojo.Student;

import java.util.Date;
import java.util.List;

/**
 * @Author North
 * @Date 2024/4/7
 */
public interface StudentMapper {
    Student selectById(Long id);
    List<Student> selectByName(String name);
    List<Student> selectByBirth(Date birth);
    List<Student> selectBySex(char sex);
}

StudentMapper.xml 映射文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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.north.mybatis.mapper.StudentMapper">
    <select id="selectById" resultType="Student">
        select * from t_student where id = #{id}
    </select>

    <select id="selectByName" resultType="Student">
        select * from t_student where name = #{name}
    </select>

    <select id="selectByBirth" resultType="Student">
        select * from t_student where birth = #{birth}
    </select>

    <select id="selectBySex" resultType="Student">
        select * from t_student where sex = #{sex}
    </select>
</mapper>

测试类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.north.mybatis.test;

import com.north.mybatis.mapper.StudentMapper;
import com.north.mybatis.pojo.Student;
import com.north.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @Author North
 * @Date 2024/4/7
 */
public class StudentMapperTest {
    @Test
    public void testSelectBySex() {
        SqlSession sqlSession = SqlSessionUtil.openSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> students = mapper.selectBySex('女');
        students.forEach(student -> System.out.println(student));
        sqlSession.close();
    }

    @Test
    public void testSelectByBirth() throws ParseException {
        SqlSession sqlSession = SqlSessionUtil.openSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date birth = simpleDateFormat.parse("2001-8-16");
        List<Student> students = mapper.selectByBirth(birth);
        students.forEach(student -> System.out.println(student));
        sqlSession.close();
    }

    @Test
    public void testSelectByName() {
        SqlSession sqlSession = SqlSessionUtil.openSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> names = mapper.selectByName("陈平安");
        System.out.println(names);
        sqlSession.close();
    }

    @Test
    public void testSelectById() {
        SqlSession sqlSession = SqlSessionUtil.openSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Student student = mapper.selectById(1L);
        System.out.println(student);
        sqlSession.close();
    }
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MyBatis详解
在mybatis-config.xml文件中,可以通过以下配置进行MyBatis事务管理:<transactionManager type="JDBC/MANAGED" />
CODER-V
2023/03/04
2K0
MyBatis详解
mybatis 缓存的使用, 看这篇就够了「建议收藏」
缓存的重要性是不言而喻的。 使用缓存, 我们可以避免频繁的与数据库进行交互, 尤其是在查询越多、缓存命中率越高的情况下, 使用缓存对性能的提高更明显。
全栈程序员站长
2022/08/31
4720
mybatis 缓存的使用, 看这篇就够了「建议收藏」
一文带你打通mybatis缓存
缓存的作用:通过减少IO的方式,来提高程序的执行效率。MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。
一个风轻云淡
2023/10/15
2770
一文带你打通mybatis缓存
MyBatis结果集映射
1.typeAliases标签,该标签用于配置全局的别名,配置别名后则不再需要写全名,在映射文件中只需要写配置的别名即可,例如:
端碗吹水
2020/09/23
8660
MyBatis结果集映射
Mybatis 框架学习(四)——如果世界真的那么简单就好了
就是说我们在java代码中要写一个pojo类,与数据库表的字段相对应,必须名字相同。
RAIN7
2022/06/15
2880
Mybatis 框架学习(四)——如果世界真的那么简单就好了
Mybatis入门例子
Mybatis是轻量级的持久化框架,的确上手非常快. Mybatis大体上的思路就是由一个总的config文件配置全局的信息,比如mysql连接信息等。然后再mapper中指定查询的sql,以及参数和返回值。 在Service中直接调用这个mapper即可。 依赖的jar包 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version> <
用户1154259
2018/01/17
8530
跟我一起学mybatis之注解开发多表操作
实现复杂关系映射之前我们可以在映射文件中通过配置来实现,使用注解开发后,我们可以使用@Results注解,@Result注解,@One注解,@Many注解组合完成复杂关系的配置
楠羽
2022/11/18
3630
跟我一起学mybatis之注解开发多表操作
【愚公系列】2023年03月 Java教学课程 116-Mybatis(动态代理和动态SQL)
Mybatis的动态代理是指在运行时动态生成DAO接口的实现类,这个实现类不需要手动编写,而是由Mybatis框架自动生成。
愚公搬代码
2023/04/03
3570
【愚公系列】2023年03月 Java教学课程 116-Mybatis(动态代理和动态SQL)
跟我一起学mybatis(2)
​ 采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是我们后面进入企业的主流。
楠羽
2022/11/18
4100
跟我一起学mybatis(2)
Mybatis 的三种执行器
在企业开发中, 对数据库的批量操作, 是一个非常常见的操作, Mybatis提供了批量执行器, 来支持批量操作.
Vincent-yuan
2021/11/02
8451
3. 使用Mybatis完成CRUD
‍ 补充知识:什么是CRUD C: Create增 R: Retrieve查(检索) U: Update改 D: Delete删
捞月亮的小北
2024/06/12
960
3. 使用Mybatis完成CRUD
【愚公系列】2023年03月 Java教学课程 120-Mybatis(构建sql)
文章目录 一、构建sql 1.SQL构建对象介绍 2.查询功能的实现 3.新增功能的实现 4.修改功能的实现 5.删除功能的实现 二、完整代码 1.Student类 2.StudentMapper类 3.ReturnSql类 4.服务类 5.配置类 ---- 一、构建sql 1.SQL构建对象介绍 对于前面开发相关 SQL 语句都是自己直接拼写的。一些关键字写起来比较麻烦、而且容易出错。 MyBatis 给我们提供了 org.apache.ibatis.jdbc.SQL 功能类,专门用于构建 SQL 语
愚公搬代码
2023/04/06
1590
【愚公系列】2023年03月 Java教学课程 120-Mybatis(构建sql)
mybatis多对一和一对多查询数据处理解读
MyBatis 的一对多、多对一,主要就是 resultMapresultMapresultMap 两个属性的使用,而一对多和多对一都是相互的,只是站的角度不同:
一个风轻云淡
2023/10/15
7010
mybatis多对一和一对多查询数据处理解读
Mybatis-06 动态Sql
在数据库字段命名规范中常常用下划线 “_” 对单词进行连接,如:"create_time",而开发中实体属性通常会采用驼峰命名法命名为 createTime 。
张小驰出没
2021/04/15
4320
Mybatis-06  动态Sql
MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
在上一章中我们学习了《MyBatis学习总结(一)——ORM概要与MyBatis快速起步》,这一章主要是介绍MyBatis核心配置文件、使用接口+XML实现完整数据访问、输入参数映射与输出结果映射等内容。
张果
2018/10/09
1.4K0
MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
跟我一起学mybatis之注解开发
这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper
楠羽
2022/11/18
2441
MySQL + MyBatis 版学生成绩管理系统来了!
之前写了一篇文章,是关于 Java SE 版本的学生成绩管理系统[1],发现反响还不错。同时也有不少小伙伴通过评论或者私信的方式问过有没有和数据库交互版本的学生成绩管理系统,然后自己也把这件事儿列入了自己的计划。害,都怪自己懒,所以一直拖到了现在。不过终究是逼迫自己完成了,也算是给私信和评论的小伙伴们一个交代吧。
村雨遥
2022/03/14
1.8K0
MySQL + MyBatis 版学生成绩管理系统来了!
mybatis接口方法参数传参解读
如果参数只有一个的话,#{} 里面的内容就随便写了。对于 ${} 来说,注意加单引号。
一个风轻云淡
2023/10/15
2390
mybatis接口方法参数传参解读
【愚公系列】2023年03月 Java教学课程 119-Mybatis(注解开发)
注解开发是指在Java程序中使用注解来完成某些特定的功能,例如配置、路由、日志、权限等。注解是一种特殊的标记,它可以在编译期或运行期被解析并执行相应的操作。注解开发可以提高代码的可读性、可维护性和可扩展性,使代码更加清晰简洁。同时,注解开发也是现代框架和技术的重要组成部分,例如Spring、Hibernate、JUnit等都广泛使用注解来实现各种功能。
愚公搬代码
2023/04/06
3840
【愚公系列】2023年03月 Java教学课程 119-Mybatis(注解开发)
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
MyBatis 令人喜欢的一大特性就是动态 SQL。 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的。 MyBatis 动态 SQL 的出现, 解决了这个麻烦。
用户1093975
2019/03/08
1.9K0
相关推荐
MyBatis详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验