Mybatis02-传参、代理

一、sqlsession的三种查询方式

test代码

		//1.读取资源
        InputStream resource = Resources.getResourceAsStream("mybatis.xml");
        //2.创建sessionFactory
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resource);
        //3.创建session
        SqlSession session = build.openSession();

        //4.调用方法
        List<Flower> list = session.selectList("com.xie.mapper.FlowerMapper.selectAll");
		System.out.println(list);
   
        Flower one = session.selectOne("com.xie.mapper.FlowerMapper.selectOne", 2);
        Flower one1 = session.selectOne("com.xie.mapper.FlowerMapper.selectOne2", list.get(0));
        System.out.println(one1);
        System.out.println(one.getName());
        session.close();

xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xie.mapper.Flower">
    <select id="selectAll" resultType="flower">
        select * from flower
    </select>
    <select id="selectOne"  resultType="flower" parameterType="int">
        select * from flower where id = #{id}
    </select>
    <select id="selectOne2" resultType="flower" >
        select * from flower where id = #{id} and name = #{name}
    </select>
</mapper>
  1. selectOne(String namespace,Object param)
  2. selectList(String namespace,Object param)
  3. selectMap(String namespace,Object param)
    可以看到,这三种方式只允许我们传入一个参数,若需要传入多个参数怎么办呢?

二、sqlsession的传参方式

传参可以不用在sql语句标签中加paramType属性,会自动识别。

  1. 传入单个参数
  2. 传入整个对象
  3. 传入一个map
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xie.mapper.Flower">
    <select id="selectAll" resultType="flower">
        select * from flower
    </select>
    传入单个参数
    <select id="selectOne"  resultType="flower" parameterType="int">
        select * from flower where id = #{id}
    </select>
    传入一个flower对象,id,name都是它的属性
    <select id="selectOne2" resultType="flower" >
        select * from flower where id = #{id} and name = #{name}
    </select>
    传入的参数是一个map,key1对应id,key2对应name
    <select id="selectOne3" resultType="flower>
        select * from flower where id=#{key1} and name=#{key2}
</mapper>

三、Mapper代理

  1. xml文件的namespace必须是接口的全路径,通过这个namespace将xml作为接口的实现类
  2. 一个接口职能对应一个xml,不能多个
  3. 接口最好与xml同名
package com.xie.mapper;


import com.xie.entity.Flower;

import java.util.List;
//多参的传递其实相当于传入一个map,{(param1,参数1),(param2,参数2).....}
public interface FlowerMapper {
    List<Flower> selectMore(String name,String production);

    List<Flower> selectMore2(String id,String production);

    int update(Flower f);



}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值