首页 > 其他分享 >MyBatis之返回值处理

MyBatis之返回值处理

时间:2023-05-28 15:44:22浏览次数:36  
标签:mapper getUserById 处理 UserDao3 sqlSession user MyBatis 返回值 id

MyBatis之返回值处理

1、返回值为基本数据类型

当我们的SQL语句执行结束,要返回的类型为基本数据类型的时候,直接写你要返回的类型即可

<insert id="addUser" parameterType="com.liu.pojo.User" >
        insert into tb_user values (null,#{username},#{password});
</insert>

接口我们可以给一个int返回值,这意思代表就是影响行数

@Insert("insert into tb_user values (null,#{username},#{password});")
int addUser(User user);

测试:

@Test
    public void addUser() {
        SqlSession sqlSession = factory.openSession();
        UserDao2 mapper = sqlSession.getMapper(UserDao2.class);
        User user = new User("张三2", "123456");
        int i = mapper.addUser(user);
        System.out.println("影响行数:" + i);
        sqlSession.commit();
        sqlSession.close();
    }

2、返回值类型为自定义类型

<select id="getUserById" resultType="com.liu.pojo.User"  parameterType="int">
        select * from tb_user where id = #{id};
</select>

测试:

@Test
    public void getUserById() {
        SqlSession sqlSession = factory.openSession();
        UserDao3 mapper = sqlSession.getMapper(UserDao3.class);
        User user = mapper.getUserById(1);

        System.out.println(user);
        sqlSession.close();
    }

3、返回值类型为自定义对象的一个属性

<select id="getUserById" resultType="java.lang.String" parameterType="int">
        select username from tb_user where id = #{id};
</select>

测试:

@Test
    public void getUserById() {
        SqlSession sqlSession = factory.openSession();
        UserDao3 mapper = sqlSession.getMapper(UserDao3.class);
        String username = mapper.getUserById(1);

        System.out.println(username);
        sqlSession.close();
    }

4、返回值为自定义对象的多个属性的值

方式一:使用map集合进行接收

UserMapper.xml文件:

<select id="getUserById" resultType="java.util.Map" parameterType="int">
        select username,age from tb_user where id = #{id};
</select>

接口:

Map getUserById(int id);

测试:

@Test
    public void getUserById() {
        SqlSession sqlSession = factory.openSession();
        UserDao3 mapper = sqlSession.getMapper(UserDao3.class);
        Map map = mapper.getUserById(1);

        System.out.println(map);
        sqlSession.close();
    }

这个常常用来处理两张表,假如我第一张表要姓名,第二张表我要小组名称,这样就可以对应起来,但是不常用。

方拾二:使用DTO设计模式接收

首先设计一个临时类,假如我现在只要用户名密码,其余信息不要,我就可以单独设计一个实体类用来存放

public class Temp {
    private String username;
    private String password;
}

接口方法:

Temp getUserById(int id);

xml文件:

<select id="getUserById" resultType="com.liu.pojo.Temp" parameterType="int">
        select username,password from tb_user where id = #{id};
</select>

测试:

@Test
    public void getUserById() {
        SqlSession sqlSession = factory.openSession();
        UserDao3 mapper = sqlSession.getMapper(UserDao3.class);
        Temp temp = mapper.getUserById(1);

        System.out.println(temp);
        sqlSession.close();
    }

拓展:DTO设计模式

拓展:DTO设计模式——将需要的查询的属性临时封装在一个新的实体类,作为属性建立set、get方法,重写toString方便打印。

这种方法也可以用来接收两张表的某些属性。

标签:mapper,getUserById,处理,UserDao3,sqlSession,user,MyBatis,返回值,id
From: https://www.cnblogs.com/jundong2177/p/17438319.html

相关文章

  • 批处理和数据库连接池
    1. 批处理  8381.1 基本介绍1. 当需要成批插入或者更新记录时。可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率。2. JDBC的批量处理语句包括 下面方法:addBatch():添加需要批量处理的SQL语句或参数executeBa......
  • httprunner4.x学习6 - 两种方式处理接口关联
    第一种方式:使用export导出变量,变成全局变量当登录用例写完后,后面想继续写其他用例,可以导入前面的login用例,当成下个用例的步骤使用导入前一个用例之前,需先export导出变量,变成全局变量。登陆用例:创建文件夹login,在文件夹下分别创建两个文件login.yml和useinfo.ymllogin.yml......
  • 金额处理currency.js
    <template><div><el-buttontype="primary"@click="test">按钮</el-button><p></p></div></template><script>importcurrencyfrom'currency.js'expo......
  • shell中针对sudo需要密码时的处理
    方式一#shell脚本中自动为sudo输入密码echo123456|sudo-Saptupdate-S,--stdinWritetheprompttothestandarderrorandreadthepasswordfromthestandardinputinsteadofusingtheterminaldevice.将提示写入标准错误,从标准输入读取密码,而不是使用终......
  • 操作系统(3.1)--处理机调度的层次和调度算法的目标
    一、处理机调度层次1.高级调度(HighLevelScheduling)高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。主要用于多道批处理系统中,而在分时和实......
  • m基于MATLAB的发票数字信息识别算法仿真,通过形态学处理进行字符分割,通过模板匹配实
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要形态学是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等......
  • 快速熟悉String提供的处理字符串的常用方法
    packagecom.String;publicclassStringDemo{publicstaticvoidmain(String[]args){//快速熟悉String提供的处理字符串的常用方法Strings="黑马java";//1.获取字符串长度System.out.println(s.length());//2.提取字......
  • Mybatis框架
    1、什么是框架?它是我们软件开发中的一套解决方案,不同的框架解决不同的问题。使用框架的好处:框架封装了很多细节,使开发者可以使用极简的方式实现功能,大大提高开发效率。2、三层架构:表现层:用于展示数据业务层:处理业务需求持久层:与数据库交互的3、持久层......
  • mybatis中的${}和#{}占位符
    Sql注入     使用占位符#{}可以有效防止sql注入,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。      {}可以将parameterType传......
  • 预处理器
    预处理器预定义符号由预处理器定义的符号//进行编译的源文件名称__FILE__//文件当前行号__LINE__//文件被编译的日期__DATE__//文件被编译的时间__TIME__//如果编译器遵循ANSIC,值为1,否则未定义__STDC__#define#defin......