Mybatis

59次阅读
没有评论

共计 2816 个字符,预计需要花费 8 分钟才能阅读完成。

本篇文章给大家分享的是有关 Mybatis_day03 中怎么输入和输出映射,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

输入映射和输出映射

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

1.parameterType(输入类型)

传递简单类型

参考第一天内容。

传递 pojo 对象

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

传递 pojo 包装对象

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

Pojo 类中包含 pojo。

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

public class QueryVo { private User user; public User getUser() { return user; } public void setUser(User user) this.user = user;* } }

Sql 语句

SELECT * FROM user where username like  % 刘 %

Mapper 文件

!--  使用包装类型查询用户   使用 ognl 从对象中取属性值,如果是包装对象可以使用. 操作符来取内容部的属性  --   select id= findUserByQueryVo  parameterType= queryvo  resultType= user  SELECT * FROM user where username like  %${user.username}%   /select   接口  public interface UserMapper { User findUserByid(Integer id); List User  findUserByUserName(String name); List User  findUserByUserNameAndSex(String name,String sex); Integer insertUser(User user); Integer deleteByUserId(Integer id); Integer updateUserById(User user); List User  QueryVoByUserList(QueryVo queryVo); }  测试方法  @Test public void testFindUserByQueryVo() throws Exception { SqlSession sqlSession = sessionFactory.openSession(); // 获得 mapper 的代理对象  UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 创建 QueryVo 对象  QueryVo queryVo = new QueryVo(); // 创建 user 对象  User user = new User(); user.setUsername(刘  queryVo.setUser(user); // 根据 queryvo 查询用户  List User  list = userMapper.findUserByQueryVo(queryVo); System.out.println(list); sqlSession.close(); }

1.resultType(输出类型)

输出简单类型

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

Mapper.xml 文件

!--  获取用户列表总数  --   select id= findUserCount  resultType= int  select count(1) from user  /select  Mapper 接口  public int findUserCount() throws Exception;  调用: Public void testFindUserCount() throws Exception{ // 获取 session SqlSession session = sqlSessionFactory.openSession(); // 获取 mapper 接口实例  UserMapper userMapper = session.getMapper(UserMapper.class); // 传递 Hashmap 对象查询用户列表  int count = 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 类属性对应起来

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

Property:表示 User 类的属性。

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

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

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

Mapper 接口定义

public List User  findUserListResultMap() throws Exception;

以上就是 Mybatis_day03 中怎么输入和输出映射,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计2816字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)