iBATIS 如何对sql 输入参数 的映射

一、输入参数的映射:
1、parameterClass的使用
2、parameterMap的使用
3、如何用Map类型的对象作为传入参数

parameterClass
  <insert id="insertUser" parameterClass="User">
  	insert into t_user values (
  		null,#username#,#password#
  	)
  	<selectKey resultClass="int" keyProperty="id">
  		SELECT @@IDENTITY AS ID
  	</selectKey>  	
  </insert>
  
  <insert id="insertUser2">
  	insert into t_user values (
  		null,#username#,#password#
  	)
  	<selectKey resultClass="int" keyProperty="id">
  		SELECT @@IDENTITY AS ID
  	</selectKey> 
  </insert>
 

insertUser使用了parameterClass,所以必需传入User类型的对象
User user = new User();
		user.setUsername("张三");
		user.setPassword("张三密码");
		
		//传递进去的对象,必须是User类型
		Object obj  = sqlMapper.insert("insertUser", user);

insertUser2没有使用parameterClass,所以可以传入任意具有相应属性值的对象
JustAnObject anobj = new JustAnObject();
		anobj.setUsername("用户名");
		anobj.setPassword("用户密码");
		
		//如果没有指定parameterClass属性,则任何一个具有相应属性值
		//的对象都可以被传递进去
		Object obj  = sqlMapper.insert("insertUser2", anobj);


parameterMap的使用
  <parameterMap class="User" id="insertUser-param">
  	<parameter property="username"/>
  	<parameter property="password"/>
  </parameterMap>

  <insert id="insertUser" parameterMap="insertUser-param">
  	insert into t_user values (
  		null,?,?
  	)
  	<selectKey resultClass="int" keyProperty="id">
  		SELECT @@IDENTITY AS ID
  	</selectKey>  	
  </insert>

parameterMap用于传入参数,以便匹配SQL语句中的?号
User user = new User();
		user.setUsername("张三dd");
		user.setPassword("张三密码dd");
		
		Object obj  = sqlMapper.insert("insertUser", user);


利用parameterMap,可以定义参数对象的属性如何映射到SQL查询语句的动态参数上,注意parameterMap中<parameter/>标签的先后顺序不能颠倒!

如何用Map类型的对象作为传入参数
  <!-- 
  这里,可以使用全路径类名,如:
  java.util.Map
  java.util.HashMap
  java.util.TreeMap
  或
  map
  -->
  <insert id="insertUser" parameterClass="map">
  	insert into t_user values (
  		null,#username#,#password#
  	)
  </insert>

		Map user = new TreeMap();
		user.put("username", "Map用户");
		user.put("password", "Map用户密码");
		sqlMapper.insert("insertUser",user);


你可能感兴趣的:(java,sql,ibatis)