- CRUD(增删改查)
- 1.namespace 命名空间
- 2.select
- 3.insert
- 4.update
- 5.delete
- 注意:增删改需要提交事务
- 万能Map
- 模糊查询
只需改动UserMapper.java UserMapper.xml UserDao.test
1.namespace 命名空间namespace中的包名要和Dao / mapper 接口的包一致。
2.select选择,查询语句
- id:就是对应的namespace中的方法名;
- resultType: sql语句执行的返回值。
- parameterType: 参数类型
1.编写接口
//根据id查询用户 User getUserById(int sid);
2.编写对应的mapper中的sql语句
3.测试
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//获取Mapper --> 拿到对象 --> 直接调方法
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
3.insert
insert into mybatis.user(sid, sname, pwd) values (#{sid},#{sname},#{pwd})
//增删改需要提交事务
@Test//增加
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//获取Mapper --> 拿到对象 --> 直接调方法
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(4,"slugger","654321"));
//提交事物
sqlSession.commit();
sqlSession.close();
}
4.update
update mybatis.user set sname = #{sname},pwd = #{pwd} where sid = #{sid};
@Test//修改
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(2,"MaxPark","123123"));
sqlSession.commit();
sqlSession.close();
}
5.delete
delete from mybatis.user where sid = #{sid};
@Test//删除
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(3);
sqlSession.commit();
sqlSession.close();
}
注意:增删改需要提交事务
- resource用路径/
- namespace用 .
万能Map
若我们实体类,或数据库中的表,字段或者参数过多,我们应该考虑使用Map
int addUser2(Mapmap);
insert into mybatis.user(sid, sname, pwd) values (#{userid},#{userName},#{password})
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map map = new HashMap();
map.put("userid",3);
map.put("userName","afei");
map.put("password","111111");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
- Map传递参数,直接在sql中取出key即可 【parameterType=“map”】
- 对象传递参数,直接在sql中取出对象的属性即可 【parameterType=“object”】
- 只有一个基本类型参数的情况下,可以直接在sql中取到,例:【parameterType=“int”】可以省略不写
- 多个参数用Map,或者注解
模糊查询
- Java代码执行的时候,传递通配符% %
ListuserList = mapper.getUserLike("s");
- 在sql拼接中使用通配符
//模糊查询 ListgetUserLike(String value);
//模糊查询
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userList = mapper.getUserLike("s");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
查询结果
User{sid=1, sname='feliks', pwd='123456'}
User{sid=4, sname='slugger', pwd='654321'}
User{sid=5, sname='spiderman', pwd='222222'}



