===================单参数传递====================
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(); }
===================多参数处理,普通情况===================
默认情况下多参数,应该是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================
public Person getPersonByNameAndGender(Person person);
<select id="getPersonByNameAndGender" resultType="person"> select * from person where username=#{username} and gender=#{gender} </select>
=================多参数处理,MAP篇===============================
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);
普通方式:
public Person getPersonByNameAndGender(@Param("username") String username,@Param("gender") String gender);
=======================集合处理===============================
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>
<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});