映射参数

来源:互联网 发布:java http请求获取mac 编辑:程序博客网 时间:2024/06/05 12:04

1、参数
a、当只有一个参数时,则在xml映射文件中获取改参数数据时没有要求
b、当有多个参数时,则默认将这些参数放到Map集合中,key为arg0…argn或param1…paramn;为了在获取参数值时xml映射文件中的key有意义,可以通过@Param注解的方式指定key的值
c、当参数为自定义引用类型时,则直接使用#{成员变量名}
d、{}与#{}区别:{}直接将数据和sql进行拼接,无法防止SQL注入;#{}以?方式作为占位符,可以防止SQL注入

对数据进行添加,修改或者删除时方法返回值可以是布尔,int,long,及其包装类,如果为Boolean或其包装类则表示是否修改成功,如果为int或long类型,及其包装类,则返回受影响的行数

1、
有两个参数实质是用map实现的,mybatis自动转换(转下面的2)

package com.lq.userinfo;import org.apache.ibatis.annotations.Param;import com.lq.vo.UserInfo;public interface IUserInfoDao{    UserInfo selectById(@Param("id")String id,@Param("name")String name);}
package com.lq.userinfo;import com.lq.vo.UserInfo;public interface IUserInfoService {    UserInfo selectById(String id,String name);}
<?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.lq.userinfo.IUserInfoDao">    <select id="selectById" resultType="com.lq.vo.UserInfo">        select * from employee where id=#{id} and user_name=#{name}    </select></mapper>
package com.lq.userinfo.imp;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.lq.userinfo.IUserInfoDao;import com.lq.userinfo.IUserInfoService;import com.lq.vo.UserInfo;@Servicepublic class UserInfoService implements IUserInfoService{    @Autowired    IUserInfoDao userInfoDao;    @Override    public UserInfo selectById(String id,String name) {        return userInfoDao.selectById(id,name);    }}

2、

package com.lq.test;import java.util.HashMap;import java.util.Map;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.lq.userinfo.IUserInfoDao;import com.lq.vo.UserInfo;public class Test {    public static void main(String[] args){        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");        IUserInfoDao userInfoDao = applicationContext.getBean(IUserInfoDao.class);        Map<String,String> map = new HashMap<>();        map.put("param1", "9c702712-cc24-4573-accf-c3c9bcd9daf7");        map.put("param2", "丹");        UserInfo userInfo= userInfoDao.selectById(map);        System.out.println(userInfo);        applicationContext.close();    }}
package com.lq.userinfo;import java.util.Map;import com.lq.vo.UserInfo;public interface IUserInfoDao{    UserInfo selectById(Map<String,String> 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.lq.userinfo.IUserInfoDao">    <select id="selectById" resultType="com.lq.vo.UserInfo">        select * from employee where id=#{param1} and user_name=#{param2}    </select></mapper>

3、
参数为自定义类型

package com.lq.userinfo;import com.lq.vo.UserInfo;public interface IUserInfoDao{    UserInfo selectById(UserInfo userInfo);}
<?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.lq.userinfo.IUserInfoDao">    <select id="selectById" resultType="com.lq.vo.UserInfo">        select * from employee where id=#{id} and user_name=#{userName}    </select></mapper>
package com.lq.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.lq.userinfo.IUserInfoDao;import com.lq.vo.UserInfo;public class Test {    public static void main(String[] args){        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");        IUserInfoDao userInfoDao = applicationContext.getBean(IUserInfoDao.class);        UserInfo userInfo = new UserInfo();        userInfo.setId("9c702712-cc24-4573-accf-c3c9bcd9daf7");        userInfo.setUserName("丹");        userInfo = userInfoDao.selectById(userInfo);        System.out.println(userInfo);        applicationContext.close();    }}
原创粉丝点击