增删改查功能实现
整体框架已经写好后,后续需要使用增删改查只需要修改UserMappr 和UserMappr.xml,以及Test测试类就可以了。
1.通过id查询用户
Dao接口 :UserMapper
//通过id获取用户
User getUserById(int id);
UserMapper.xml
<select id="getUserById" resultType="com.ZXF.pojo.User" parameterType="int">
select * from mybatis.user where id=#{id};
</select>
UserMapperTest
@Test
public void getUserById(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(1);
System.out.println(userById);
sqlSession.close();
}
2.插入用户
Dao接口 :UserMapper
//插入用户
int addUser(User user);
UserMapper.xml
<insert id="addUser" parameterType="com.ZXF.pojo.User">
insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
</insert>
UserMapperTest
public void addUser(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int addUser = mapper.addUser(new User(4, "啦啦", "123456"));
if (addUser>0){
sqlSession.commit();//提交事务
}
sqlSession.close();
}
3.更新用户
Dao接口 :UserMapper
//更新用户
int updateUser(User user);
UserMapper.xml
<update id="updateUser" parameterType="com.ZXF.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
</update>
UserMapperTest
@Test
//更新用户
public void updateUser(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int updateUser = mapper.updateUser(new User(4, "啦啦", "111111"));
if (updateUser>0){
sqlSession.commit();
}
sqlSession.close();
}
4.删除用户
Dao接口 :UserMapper
//删除用户
int deleteUser(int id);
UserMapper.xml
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
UserMapperTest
@Test
//删除用户
public void deleteUser(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.deleteUser(4);
if (i>0){
sqlSession.commit();
}
sqlSession.close();
}
万能的map
通过创建map的方式也可以进行增删改查。这里就写一个增加用户和一个通过模糊查询用户做个模板。
1.map方式添加用户
Dao接口 :UserMapper
//使用map插入用户
int addUser2(Map<String,Object> map);
UserMapper.xml
<!-- map插入-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id,name,pwd) values (#{userid},#{username},#{userpwd})
</insert>
UserMapperTest
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<>();
map.put("userid",4);
map.put("username","啦啦");
map.put("userpwd","1234567");
int i = mapper.addUser2(map);
if (i>0){
sqlSession.commit();
}
sqlSession.close();
}
2.模糊查询
Dao接口 :UserMapper
//使用map+模糊查询
List getUserById2(Map<String,Object> map);
UserMapper.xml
<select id="getUserById2" parameterType="map" resultType="com.ZXF.pojo.User">
select * from mybatis.user where name like #{username};
</select>
UserMapperTest
@Test
public void getUserById2(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<>();
map.put("username","%小%");
List<User> user = mapper.getUserById2(map);
for (User user1 : user) {
System.out.println(user1);
}
sqlSession.close();
}
注意
这些名词的作用别搞混了,我就经常把它们记混了。
- namespace:绑定一个接口,连接的接口名,
- parameterType:将会传入这条语句的参数的类全限定名或别名。
- resultType:期望从这条语句中返回结果的类全限定名或别名。
- resultMap:对外部 resultMap 的命名引用。(结果集映射,下一篇文章会有例子)
注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。
还有一个重要的:增删改一定要提交事务,不然就算程序运行成功,数据库也不会有任何改变。
如果没看过我上一篇文章的点这里:mybatis学习笔记-01
本篇文章到这就结束了。自学不易,如果写得不详细,可以结合官方文档看,也可以评论区交流,这篇文章有可以优化的地方希望大佬指教指教。