首页 资讯频道 互联频道 智能频道 网络 数据频道 安全频道 服务器频道 存储频道

Mybatis_day03介绍 解析输入映射和输出映射

2020-11-05 10:30:03 来源 : 键盘蜂

输入映射和输出映射

Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。

1.parameterType(输入类型)

传递简单类型

参考第一天内容。

传递pojo对象

Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。

传递pojo包装对象

开发中通过pojo传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。

Pojo类中包含pojo。

需求:根据用户名查询用户信息,查询条件放到QueryVo的user属性中。

publicclassQueryVo{

privateUseruser;

publicUsergetUser(){

returnuser;

}

publicvoidsetUser(Useruser)

this.user=user;*

}

}

Sql语句

SELECT*FROMuserwhereusernamelike'%刘%'

Mapper文件

 

SELECT*FROMuserwhereusernamelike'%${user.username}%'

 

接口

publicinterfaceUserMapper{

UserfindUserByid(Integerid);

ListfindUserByUserName(Stringname);

ListfindUserByUserNameAndSex(Stringname,Stringsex);

IntegerinsertUser(Useruser);

IntegerdeleteByUserId(Integerid);

IntegerupdateUserById(Useruser);

ListQueryVoByUserList(QueryVoqueryVo);

}

测试方法

@Test

publicvoidtestFindUserByQueryVo()throwsException{

SqlSessionsqlSession=sessionFactory.openSession();

//获得mapper的代理对象

UserMapperuserMapper=sqlSession.getMapper(UserMapper.class);

//创建QueryVo对象

QueryVoqueryVo=newQueryVo();

//创建user对象

Useruser=newUser();

user.setUsername("刘");

queryVo.setUser(user);

//根据queryvo查询用户

Listlist=userMapper.findUserByQueryVo(queryVo);

System.out.println(list);

sqlSession.close();

}

1.resultType(输出类型)

输出简单类型

参考getnow输出日期类型,看下边的例子输出整型:

Mapper.xml文件

 

selectcount(1)fromuser

 

Mapper接口

publicintfindUserCount()throwsException;

调用:

PublicvoidtestFindUserCount()throwsException{

//获取session

SqlSessionsession=sqlSessionFactory.openSession();

//获取mapper接口实例

UserMapperuserMapper=session.getMapper(UserMapper.class);

//传递Hashmap对象查询用户列表

intcount=userMapper.findUserCount();

//关闭session

session.close();

}

输出简单类型必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型。

使用session的selectOne可查询单条记录。

输出pojo对象

参考第一天内容

输出pojo列表

参考第一天内容。

resultMap

resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。

resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

Mapper.xml定义

使用resultMap指定上边定义的personmap。

定义resultMap

由于上边的mapper.xml中sql查询列和Users.java类属性不一致,需要定义resultMap:userListResultMap将sql查询列和Users.java类属性对应起来

:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个。

Property:表示User类的属性。

Column:表示sql查询出来的字段名。

Column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。

:普通结果,即pojo的属性。

Mapper接口定义

publicListfindUserListResultMap()throwsException;

关键词:Mybatis

最近更新