Mybatis—CURD以及模糊查询

2022-09-15 14:45:35

命名空间namespace:
在这里插入图片描述
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!

1.查询(select)

select:

接口中的方法名与映射文件中的SQL语句ID 一一对应

  1. id
  2. parameterType
  3. resultType

案例:根据id查询用户

1.写接口(在UserMapper中添加对应的方法)

publicinterfaceUserMapper{//根据ID查询用户UsergetuserByID(int id);}

2.UserMapper.xml配置文件的编写Sql语句

<selectid="getuserByID"parameterType="int"resultType="com.xiong.pojo.User">
   	select * from mybatis.user where id = #{id};</select>

3.测试

@TestpublicvoidgetUserID(){SqlSession sqlSession=MyBatisUtils.getSqlSession();UserMapper mapper= sqlSession.getMapper(UserMapper.class);User user= mapper.getuserByID(4);System.out.println(user);
        sqlSession.close();}

注意:根据密码和名字直接查询用户
使用万能的Map方法
1.在接口方法中,直接传递Map;

UsergetuserByID2(Map<String,Object> map);

2.在编写sql语句的时候,需要传递参数的类型,参数类型是map

<selectid="getuserByID2"resultType="com.xiong.pojo.User"parameterType="map">
        select * from mybatis.user where id = #{userID} and name =#{username};</select>

在这里插入图片描述此处的userID,username可以不是数据库里面的字段,用map方法添加就可。

3.在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!

@TestpublicvoidgetUserID2(){SqlSession sqlSession=MyBatisUtils.getSqlSession();UserMapper mapper= sqlSession.getMapper(UserMapper.class);Map map=newHashMap<String,Object>();
        map.put("userID",2);

        map.put("username","gou");User user= mapper.getuserByID2(map);System.out.println(user);
        sqlSession.commit();
        sqlSession.close();}

在这里插入图片描述总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可

2.插入(insert)

insert
1.在UserMapper中添加对应的方法

intaddUser(User user);

2.在UserMapper.xml中添加insert语句

<insertid="addUser"parameterType="com.xiong.pojo.User">
        insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});</insert>

3.测试

@Testpublicvoidadduser(){SqlSession sqlSession=MyBatisUtils.getSqlSession();UserMapper mapper= sqlSession.getMapper(UserMapper.class);int i= mapper.addUser(newUser(4,"狗哥","45412331"));if(i>0){System.out.println("插入成功");}//记得提交事物
        sqlSession.commit();
        sqlSession.close();}

注意点:增、删、改操作需要提交事务!

3.更新(update)

1.编写接口方法

intupdateUser(User user);

2.编写接口对应的UserMapper.xml文件中的SQL

<updateid="updateUser"parameterType="com.xiong.pojo.User">
    update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};</update>

3.测试(记住一定要提交事物)

@Testpublicvoidupdateuser(){SqlSession sqlSession=MyBatisUtils.getSqlSession();System.out.println(sqlSession);UserMapper mapper= sqlSession.getMapper(UserMapper.class);int i= mapper.updateUser(newUser(5,"hh","55464545"));if(i>0){System.out.println("更新成功");}

        sqlSession.commit();
        sqlSession.close();}

4.删除(delete)

1.编写接口方法

intdelete(int id);

2.编写对应配置文件的SQL

<deleteid="delete"parameterType="int">
        delete from mybatis.user where id=#{id};</delete>

3.测试(记得要提交事物)

@Testpublicvoiddeleteuser(){SqlSession sqlSession=MyBatisUtils.getSqlSession();System.out.println(sqlSession);UserMapper mapper= sqlSession.getMapper(UserMapper.class);int i= mapper.delete(4);if(i>0){System.out.println("更新成功");}

        sqlSession.commit();
        sqlSession.close();}

总结:所有的增删改操作都需要提交事务!

5.模糊查询(like)

直接在sql语句中拼接通配符,会引起sql注入

<!--    模糊查询--><selectid="getUserListByLike"resultType="com.xiong.pojo.User">
        select * from mybatis.user where name like "%"#{value}"%";</select>

在这里插入图片描述测试:

@TestpublicvoidgetUserListByLike(){SqlSession sqlSession=MyBatisUtils.getSqlSession();UserMapper mapper= sqlSession.getMapper(UserMapper.class);List<User> user=(List<User>) mapper.getUserListByLike("李");for(User user1: user){System.out.println(user1);}
        sqlSession.commit();
        sqlSession.close();}
  • 作者:逆风飞扬fei
  • 原文链接:https://blog.csdn.net/weixin_45392405/article/details/117652906
    更新时间:2022-09-15 14:45:35