重要参数:
- namespace:其中的包名要和Dao/mapper接口的包名一致
- id:对应namespace 中的方法名
- parameterType:传递的参数类型,在只有一个基本数据类型时候可以省略
- resultType:方法返回值类型
1、带一个参数的查询(接口、Mapper、测试类):
User getUserById(int id);
<select id="getUserById" parameterType="int" resultType="com.Nana.pojo.User">
select * from mybatis.user where id=#{id}
</select>
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
2、增加用户(接口、Mapper、测试类):
void addUser(User user);
<insert id="addUser" parameterType="com.Nana.pojo.User">
insert into mybatis.user(id, name, pwd) values(#{id}, #{name}, #{pwd})
</insert>
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(5,"哈哈","123456"));
sqlSession.commit();
sqlSession.close();
}
3、修改用户(接口、Mapper、测试类):
void updateUser(User user);
<update id="updateUser" parameterType="com.Nana.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(5, "呵呵", "111111"));
sqlSession.commit();
sqlSession.close();
}
4、删除用户(接口、Mapper、测试类):
void deleteUser(int id);
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id}
</delete>
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(5);
sqlSession.commit();
sqlSession.close();
}
5、万能Map和模糊查询
如果数据库中字段很多的情况下可以考虑使用map传参,就无须传对象了
void addUser2(Map<String, Object> map);
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id, pwd) values(#{userid}, #{userpwd})
</insert>
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String,Object>();
map.put("userid", 5);
map.put("userpwd", "1111111");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
模糊查询两种书写方式
- java代码执行时传递通配符%%
List<User> userList = userMapper.getUserLike("%李%");
- 在sql拼接中使用通配符,这种方式可以防止sql注入
select * from mybatis.user where name like "%"#{value}"%"