namespace中的包名要和mapper接口一致
3.2 查询语句id:就是对应的namespace中的方法名resultType:Sql语句执行的返回值parameterType:参数类型注意点:增删改需要提交事务 sqlSession.commit()!!! 3.2.1 Select
编写接口
//根据ID查询用户 User getUserById(int id);
编写对应mapper中的sql语句
测试
@Test
public void getUserById(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(1);
System.out.println(userById);
sqlSession.close();
}
编写接口
//insert一个用户 int addUser(User user);
编写对应mapper中的sql语句
insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd});
测试
//增删改需要提交事务
@Test
public void addUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res=mapper.addUser(new User(4,"小智","852369"));
if(res>0){
System.out.println("插入成功");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
编写接口
//修改用户 int updateUser(User user);
编写mapper中对应的sql语句
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
测试
@Test
public void updateUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(4,"小昔","5262356"));
sqlSession.commit();
sqlSession.close();
}
编写接口
//删除用户 int deleteUser(int id);
编写mapper中的sql语句
delete from mybatis.user where id=#{id};
测试
@Test
public void deleteUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(2);
sqlSession.commit();
sqlSession.close();
}
标签注意不要匹配错误
resource绑定mapper需要时路径* */ *****/ ****
程序配置文件需要符合规范
java.lang.NullPointerException空指针异常,没有注册到资源
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J4jQdorJ-1648437028952)(C:Users12044AppDataRoamingTyporatypora-user-imagesimage-20220310153439354.png)]
输出xml文件中存在乱码问题,UTF-8编码
maven资源没有导出
3.4 万能的Map假设,我们的实体类,或者数据据中的表,字段参数过多,我们应当使用map
//万能的Map int addUser2(Mapmap);
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{password});
@Test
public void addUser2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap map = new HashMap<>();
map.put("id",5);
map.put("name","小哥哥");
map.put("password",5154665);
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可 (parameterType=“map”)
对象传递参数,直接在sql中取出对象即可(parameterType=“com.Yurrize.pojo.User”)
只有一个基本类型参数的情况下,可以直接在sql类型中取到 (parameterType=“int”)
多个参数用Map,或者注解
3.5 模糊查询通常:
ListuserList = mapper.getUserLike("%小%");
问题: select * from mybatis.user where id=?
select * from mybatis.user where id=1(正常)
select * from mybatis.user where id=1 or 1=1(异常)
用#防止出现sql注入:
select * from mybatis.user where name like "%"#{value}"%"
ListuserList = mapper.getUserLike("小");



