-
id:在接口文件中的函数名
-
resultType:返回结果的类型
-
parameterType:传参类型(需要传入多个参数时,将 所有参数封装成类)
1.select
在MapperDao中加入:
User getUserById(int id);
在Mapper.xml中:
<select id="getUserById" resultType="com.zgl.pojo.User" parameterType="int">
select * from mybatis.user where id=#{id};
</select>
2.insert
在MapperDao中加入:
int addUser(User user);
在Mapper.xml中:
<!-- 属性中的对象可以直接取出来-->
<insert id="addUser" parameterType="com.zgl.pojo.User">
insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
注意:插入的变量名必须和User类里面的变量同名,否则找不到数据
3.update
在MapperDao中加入:
int updateUser(User user);
在Mapper.xml中:
<update id="updateUser" parameterType="com.zgl.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
4.delete
在MapperDao中加入:
int deleteUser(int id);
在Mapper.xml中:
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
5.万能的Map
如果我们实体类中的参数过多,或数据库中表字段过多,我们应当考虑用map(不用去知道实体类中有哪些参数,甚至可以不用实体类)
在MapperDao中加入:
// 万能map
int addUser2(Map<String,Object> map);
在Mapper.xml中:
<!-- 万能map-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id,name,pwd) values (#{userId},#{userName},#{password})
</insert>
测试:
@Test
public void addUser2(){
SqlSession sqlSession=MybatisUtils.getSqlSeesion();
UserDao userDao=sqlSession.getMapper(UserDao.class);
Map<String,Object> map=new HashMap<String, Object>();
map.put("userName","zgl");
map.put("userId",4);
map.put("password","123456");
userDao.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
注意:map中的键值必须和SQL语句中的变量名对应