这是传统的传递参数方法,传递的是实体类 。
sql语句中属性要和User中一一对应,比较繁琐易出错。
- 接口
int addUser(User user);
- XML
<insert id="addUser" parameterType="com.pjx.pojo.User" >
insert into user (id,name,pwd) values (#{id},#{name},#{pwd});
</insert>`
- Test
@Test
public void addUser(){
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
System.out.println(mapper.addUser(new User(6,"胡","26")));
session.commit();
session.close();
}
因此工作中常用的传递参数使用map
- 接口
int addUser2(Map<String,Object> map);
- XML
<insert id="addUser2" parameterType="map" >
insert into user (id,name,pwd) values (#{Userid},#{Username},#{Userpwd});
</insert>
- Test
public void addUser2(){
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("Userid",5);
map.put("Username","王五");
map.put("Userpwd","5555555");
mapper.addUser2(map);
session.commit();
session.close();
}
只用map键值对来传递参数名称可随意命名,相比较于实体类做参数简单方便。
Map传递参数,直接在sql中取出对应的key — parameterType=“map”
对象传递参数,直接在sql中取对象的属性 —
parameterType=“Object”
只有一个基本类型参数的情况下,可以直接在SQL中取到 — 单个参数可以省略parameter
多个参数用Map,或者注解