mybaits参数传递

de4333124afda41780e3b1a6ab7b336203b.jpg

a418fe987afe2a9f7d1a46777aeff84b746.jpg

78ee0fd589670c9337548d5560ae226e6bc.jpg

3e913063ee00b9803d2b13019245c9bf9dd.jpg

f2c98afe15b0322613e8ee8c71d0278c60f.jpg

 

 

2250d4ac4349a12605e50e504a793f4943a.jpg

 

01f2833cbe54c8db5dc589d923b0b7602e5.jpg

===================单参数传递====================

0b891ab968ead975bbfc18a68dd49dab7fc.jpg

public interface PersonMapper {
     public  void  deletePerson(Integer id);

#{可任意命名}

<delete id="delete" parameterType="int" >
  delete * from person where id=#{id}
</delete>
public class ParameterTest {
    public static SqlSessionFactory sqlSessionFactory = null;
    public static SqlSessionFactory getSqlSessionFactory() {
        if (sqlSessionFactory == null) {
            String resource = "mybatis-config.xml";
            try {
                Reader reader = Resources.getResourceAsReader(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sqlSessionFactory;
    }

    /**
     * 根据ID删除所对应的Person数据
     */
    public void deletePerson() {
        SqlSession sqlSession = this.getSqlSessionFactory().openSession();
        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
        personMapper.deletePerson(2);
        sqlSession.commit();  
    }

04cb7254cc4076721831334d06d2847126a.jpg

===================多参数处理,普通情况===================

默认情况下多参数,应该是arg0,arg1,param1,param2这种获取方式。而不能使用#{username}等

public Person getPersonByNameAndGender(String username,String gender);
<!-- 根据多参数进行数据的查询-->
<select id="getPersonByNameAndGender" resultType="person">
  select * from person where username=#{param1} and gender=#{param2}
</select>

===================多参数处理,封装POJO================

42c482655df29aaf58bf208ff03c4985a13.jpg

public Person getPersonByNameAndGender(Person person);
<select id="getPersonByNameAndGender" resultType="person">
  select * from person where username=#{username} and gender=#{gender}
</select>

=================多参数处理,MAP篇===============================

05d1ee095c49c2e1eb84ed5260680ac860b.jpg

public Person getPersonByNameAndGender(Map<String,Object> param);
Map<String,Object> param=new HashMap<String, Object>();
param.put("name","wangwu");
param.put("gender","f");
Person person=personMapper.getPersonByNameAndGender(param);

24ea4b8e133d68c81569c28d35f409e9bea.jpg

普通方式:

public Person getPersonByNameAndGender(@Param("username") String username,@Param("gender") String gender);

=======================集合处理===============================

47bfbc34e2013ca44e9fb3ab08f6afe74dc.jpg

public Person getPersonByCollection(Collection list);

#{}因为list也是collection。所以可以使用#{collection[0]}或者#{list[0]}

<select id="getPersonByCollection" resultType="person">
  select * from person where id=#{list[0]}
</select>
public void testCollection()
{
    SqlSession sqlSession = this.getSqlSessionFactory().openSession();

    PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
    Person person=personMapper.getPersonByCollection(Arrays.asList(1,2));
    System.out.println(person);

============数组===============

public List<Person> getPersonsByIds(int[] ids);
Person person=personMapper.getPersonByCollection(new int[]{1,2});
<select id="getPersonByCollection" resultType="person">
  select * from person where id=#{array[0]}
</select>

也可以使用@param的注解方式

public Person getPersonByCollection(@Param("test") int[] ids);
<select id="getPersonByCollection" resultType="person">
  select * from person where id=#{test[0]}
</select>

85bfe462c81c5901d59a3ca2ba16ad06a68.jpg

b31f8ae69bc34521b46baca7a9d6810aee4.jpg

<select id="getPersonsByIds" resultType="person">
  select * from person where id in
  <foreach collection="array" item="id" index="i" open="(" close=")" separator=",">
    #{id}
  </foreach>
</select>
public List<Person> getPersonsByIds(int[] ids);
public void testForeach()
{
    SqlSession sqlSession = this.getSqlSessionFactory().openSession();
    PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
    List<Person> personList=personMapper.getPersonsByIds(new int[]{1,2,3,4,5});

 

转载于:https://my.oschina.net/popfei/blog/1836859

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值