当前位置: 首页 > 科技观察

Mybatis_day03:输入映射和输出映射

时间:2023-03-19 16:09:34 科技观察

输入映射和输出映射Mapper.xml映射文件定义了操作数据库的sql,每条sql都是一条语句,映射文件是mybatis的核心。1.parameterType(inputtype)传simple类型参考第一天的内容。传递pojo对象Mybatis使用ognl表达式解析object字段的值,#{}或${}括号中的值为pojo属性名。传递pojo包装器对象在开发中,查询条件是通过pojo传递的。查询条件是一个综合查询条件,不仅包括用户查询条件,还包括其他查询条件(如用户购买商品信息也作为查询条件)。这时候包装对象就可以使用传参了。Pojo类包含pojo。需求:根据用户名查询用户信息,查询条件放在QueryVo的user属性中。publicclassQueryVo{privateUseruser;publicUsergetUser(){returnuser;}publicvoidsetUser(Useruser)this.user=user;*}}Sql语句SELECT*FROMuserwhereusernamelike'%Liu%'MapperfileSELECT*FROMuserwhereusernamelike'%${user.username}%'interfacepublicinterfaceUserMapper{UserfindUserByid(Integerid);ListfindUserByUserName(Stringname);ListfindUserByUserNameAndSex(Stringname,Stringsex);IntegerinsertUser(Useruser);IntegerdeleteByUserId(Integerid);IntegerupdateUserById(Useruser);ListQueryVoByUserList(QueryVoqueryVo);}测试方法@TestpublicvoidtestFindUserByQueryVo()throwsException{SqlSessionsqlSession=sessionFactory.openSession();//获取mapper的代理对象UserMapperuserMapper=sqlSession.getMapper(UserMapper.class);//创建QueryVo对象QueryVoqueryVo=newQueryVo();//创建用户对象Useruser=新用户();你ser.setUsername("刘");queryVo.setUser(user);//根据queryvo查询用户Listlist=userMapper.findUserByQueryVo(queryVo);System.out.println(list);sqlSession.close();}1.resultType(输出类型)输出简单类型指getnow输出日期类型,输出整型见下例:Mapper.xml文件selectcount(1)fromuserMapper接口publicintfindUserCount()throwsException;call:PublicvoidtestFindUserCount()throwsException{//获取sessionSqlSessionsession=sqlSessionFactory.openSession();//获取mapper接口实例UserMapperuserMapper=session.getMapper(UserMapper.class);//传递Hashmap对象查询用户列表intcount=userMapper.findUserCount();//关闭sessionsession.close();}输出必须查询的简单类型的结果集。有一条记录,最后将第一个字段的值转换为输出类型使用session的selectOne查询单条记录。输出的pojo对象引用第一天的内容。输出的pojo列表参考第一天的内容。resultMapresultType可以指定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类属性。:该属性表示查询结果集的唯一性,Identity很重要。如果多个字段是复合唯一约束,则定义多个字段。Property:表示User类的属性。Column:表示sql查询的字段名。把Column和property放在一起,就是把SQL查询的字段映射到指定的pojo类属性上。:普通result,即pojo的属性。Mapper接口定义publicListfindUserListResultMap()throwsException;