1.Sql映射文件中的parameterType属性传入参数
[ insert / update / delete / select元素的输入参数]
parameterType属性传入参数
- String+基本类型 【String---java.lang.String,int/boolean,java.lang.Integer】
- POJO类型【对象型】 com.wangxing.bean.Student
- 集合类型【list,hashMap】
当数据访问接口的方法只有一个参数的时候【String+基本类型/POJO类型】,当有多个参数的时候通常都是使用【集合类型】
package com.wangxing.mybatis.mapper;
import com.wangxing.mybatis.bean.Person;
import java.util.List;
import java.util.Map;
public interface PersonMapper {
void insertPerson(Person person);
void deletePerson(int perid);
void deletePersonByName(String pername);
void deletePersonByAge(int perage);
List<Person> selectPerson(Map<String,Object> parameter);
}
Sql映射文件
<?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.wangxing.mybatis.mapper.PersonMapper">
<!--测试parameterType属性为POJO类型-->
<insert id="insertPerson" parameterType="com.wangxing.mybatis.bean.Person">
insert into t_person values(null,#{pername},#{perage},#{peraddress});
</insert>
<!--测试parameterType属性为基本类型-->
<delete id="deletePerson" parameterType="int">
delete from t_person where per_id = #{perid};
</delete>
<!--测试parameterType属性为String类型-->
<delete id="deletePersonByName" parameterType="java.lang.String">
delete from t_person where per_name = #{pername};
</delete>
<!--测试parameterType属性为基本类型的封装类类型-->
<delete id="deletePersonByAge" parameterType="java.lang.Integer">
delete from t_person where per_age = #{perage};
</delete>
<resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
<id column="per_id" property="perid"></id>
<result column="per_name" property="pername"></result>
<result column="per_age" property="perage"></result>
<result column="per_address" property="peraddress"></result>
</resultMap>
<!--测试parameterType属性为集合类型-->
<select id="selectPerson" parameterType="hashMap" resultMap="personMap">
select * from t_person where per_id=#{id} or per_name=#{name} or per_age=#{age};
</select>
</mapper>
测试类
package com.wangxing.mybatis.test;
import com.wangxing.mybatis.bean.Person;
import com.wangxing.mybatis.mapper.PersonMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.HashMap;
import java.util.List;
public class TestMain {
/**
* 得到SqlSession
* @return
*/
public static SqlSession getSqlSession()throws Exception{
SqlSession sqlSession=null;
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
return sqlSessionFactory.openSession();
}
/**
* 测试parameterType属性为POJO类型
*/
public static void testInsertPerson(){
SqlSession sqlSession=null;
try{
sqlSession=getSqlSession();
PersonMapper personMapper=sqlSession.getMapper(PersonMapper.class);
Person person=new Person();
person.setPername("java");
person.setPerage(20);
person.setPeraddress("西安");
personMapper.insertPerson(person);
sqlSession.commit();
}catch (Exception e){
e.printStackTrace();
sqlSession.rollback();
}finally {
sqlSession.close();
}
}
/**
* 测试parameterType属性为集合类型
*/
public static void testSelectPerson(){
SqlSession sqlSession=null;
try{
sqlSession=getSqlSession();
PersonMapper personMapper=sqlSession.getMapper(PersonMapper.class);
HashMap<String,Object> parameter=new HashMap<String,Object>();
parameter.put("id",3);
parameter.put("name","wangwu");
parameter.put("age",20);
List<Person> personList=personMapper.selectPerson(parameter);
sqlSession.commit();
for(Person person:personList){
System.out.println(person.getPerid()+"\t"+person.getPername());
}
}catch (Exception e){
e.printStackTrace();
sqlSession.rollback();
}finally {
sqlSession.close();
}
}
/**
* 测试parameterType属性为String+基本类型
*/
public static void testDeletePerson(){
SqlSession sqlSession=null;
try{
sqlSession=getSqlSession();
PersonMapper personMapper=sqlSession.getMapper(PersonMapper.class);
//personMapper.deletePerson(5);
//personMapper.deletePersonByName("wangwu");
personMapper.deletePersonByAge(23);
sqlSession.commit();
}catch (Exception e){
e.printStackTrace();
sqlSession.rollback();
}finally {
sqlSession.close();
}
}
public static void main(String[] args) {
//testInsertPerson();
//testSelectPerson();
testDeletePerson();
}
}
2.#{}和${}