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方便打印。
这种方法也可以用来接收两张表的某些属性。