Mybatis03---输入/输出映射

parameterType:输入映射

类型:

  1. 简单类型
  2. pojo类型:如果parameterType为pojo类型,那sql语句中 #{值} 中,名字必须与数据库表中一致
  3. pojo包装类类型

包装类

public class QueryVo implements Serializable {
    //实现序列化,反序列
    private static final long serialVersionUID = 1l;
    private User user;
user的get/set或者是构造方法 

映射文件

<select id="findbynamevo" parameterType="queryvo" resultType="User">
                                                    包装类注入对像.属性名
        select * from USER where username like "%"#{user.username}"%";
    </select>

 

测试类

  String resource = "SqlMapConfig.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
            SqlSession sqlSession = sqlSessionFactory.openSession(true);

            usermapper mapper = sqlSession.getMapper(usermapper.class);

            QueryVo vo = new QueryVo();
             先设置user属性的值
            User user = new User();
            user.setUsername("五");
             再注入包装类
            vo.setUser(user);

            List<User> userList = mapper.findbynamevo(vo);

            System.out.println(userList);

            System.out.println(user);

resultType:输出映射(自动)

  1. 简单类型
  2. pojo类型
  3. pojo列表(还是pojo类型)

resultMap:输出映射(手动)

  1. 可以将pojo类中属性名与数据库表中属性名不一致调整输出
<resultMap type="order" id="orderResultMap">
		<!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
		  property:主键在pojo中的属性名  
		  column:主键在数据库中的列名  
		<id property="id" column="id" />

		<!-- 定义普通属性 -->
		<result property="userId" column="user_id" />
		<result property="number" column="number" />
		<result property="createtime" column="createtime" />
		<result property="note" column="note" />
	</resultMap>

	<!-- 查询所有的订单数据 -->
	<select id="queryOrderAll" resultMap="orderResultMap">
		SELECT id, user_id,
		number,
		createtime, note FROM `order`
	</select>
  1. 可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值