MyBatis之返回值处理

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方便打印。

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

posted @ 2023-05-28 15:30  戒爱学Java  阅读(189)  评论(0编辑  收藏  举报