select(查询)

编写接口

   /**
     * 根据id查询用户
     * @param id 用户编号
     * @return
     */
    User getUserById(int id);

编写对应的mapper中的sql语句

  <!--根据id查询用户-->
    <select id="getUserById" parameterType="int" resultType="com.wangziwang.pojo.User">
        select * from mybatis.user where id = #{id}
    </select>

测试

    /**
     * 根据id查询用户
     */
    @Test
    public void getUserByIdTest() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();
    }

Insert(增加)

编写接口

 /**
     * 增加一位用户信息
     * @param user 用户
     * @return
     */
    int addUser(User user);xxxxxxxxxx  /**     * 插入一位用户信息     * @param user 用户     * @return     */    int addUser(User user);/** * 根据id查询用户 * @param id 用户编号 * @return */User getUserById(int id);

编写对应的mapper中的sql语句

   <!--对象中的属性可以直接取出来-->
    <!--增加一位用户信息-->
    <insert id="addUser" parameterType="com.wangziwang.pojo.User">
        insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
    </insert>

测试

/**
 * 增加一位用户信息
 * 增删改需要提交事务
 */
@Test
public void addUserTest(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int res = mapper.addUser(new User(5, "王滋旺", "122336"));
    if(res>0){
        System.out.println("插入成功");
    }
    //提交事务
    sqlSession.commit();
    sqlSession.close();
}

Update(修改)

编写接口

    /**
     * 修改用户
     * @param user 用户
     * @return
     */
    int updateUser(User user);

编写对应的mapper中的sql语句

<!--修改用户-->
<update id="updateUser" parameterType="com.wangziwang.pojo.User">
    update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id};
</update>

测试

/**
 * 修改用户
 */
@Test
public void  updateUserTest(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int res = mapper.updateUser(new User(5, "王滋旺", "123456"));
    if(res>0){
        System.out.println("修改成功");
    }
    //提交事务
    sqlSession.commit();
    sqlSession.close();
}

Delete(删除)

编写接口

/**
 * 根据id删除一个用户
 * @param id 用户编号
 * @return
 */
int deleteUser(int id);

编写对应的mapper中的sql语句

 <!--根据id删除一个用户-->
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id};
    </delete>

测试

    /**
     * 根据id删除一个用户
     */
    @Test
    public void deleteUserTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.deleteUser(4);
        if(res>0){
            System.out.println("删除成功");
        }
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }

模糊查询

编写接口

/**
 * 模糊查询
 * @return
 */
List<User> getUserLike(String value);

编写对应的mapper中的sql语句

    <!--模糊查询用户-->
    <select id="getUserLike" resultType="com.wangziwang.pojo.User">
        select * from mybatis.user where name like #{value}
    </select>

测试

/**
 * 模糊查询用户
 */
@Test
public void getUserLikeTest(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    List<User> UserList = mapper.getUserLike("%王%");
    for (User user : UserList){
        System.out.println(user);
    }
    //关闭SqlSession
    sqlSession.close();
}

万能的Map

假设,实体类或者数据库中的表,字段或者参数过多,应当考虑使用Map

编写接口

/**
 * 万能的Map
 * @param map
 * @return
 */
int addUser2(Map<String,Object>map);

编写对应的mapper中的sql语句

<!--对象中的属性可以直接取出来-->
<!--传递map的key-->
<insert id="addUser2" parameterType="map">
    insert into mybatis.user (id,name,pwd) values (#{userid},#{userName},#{passWord});
</insert>

测试

@Test
public void addUser2Test() {
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("userid", 4);
    map.put("passWord", "222222");
    mapper.addUser2(map);
    //提交事务
    sqlSession.commit();
    sqlSession.close();
}
  • Map传递参数,直接在sql中取出key即可!

    • arameterType="map"
  • 对象传递参数,直接在sql中取对象的属性即可!

    • arameterType="Object"
  • 只有一个基本类型参数的情况下,可以直接在sql中取到

注意事项

namespace(命名空间)

namespace中的包名要和Dao/mapper接口的包名一致!

  • id:就是对应的namespace中的方法名!
  • resultType:Sql语句执行的返回值!
  • parameterType:参数类型!

增删改需要提交事务!!!

最后修改:2023 年 05 月 19 日
如果觉得我的文章对你有用,请随意赞赏