一、查询

查询操作在第一个MyBatis程序中已经有所体现,在这里我们在上一节的基础上增加约束条件。
比如有这样一个需求:查询指定姓名的信息显示。
和上一节基本流程相同,只是需要传参,比如这个需求就是需要传递姓名。

1.编写mapper

  1. <select id="queryUsersByName" resultType="pojo.Users">
  2. select * from mybatis.users where name = #{name}
  3. </select>
public interface UserMapper {
    List<Users> queryUsersByName(String name);
}

2.编写测试类并运行测试

@Test
public void queryUsersByName(){
    SqlSession sqlSession = MybatisUtil.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    List<Users> users = mapper.queryUsersByName("root");
    for (Users item:users){
        System.out.println(item);
    }
    sqlSession.close();
}

image.png

二、增加

比如有这样一个需求:增加一个姓名为InsertTest的用户。

1.编写mapper

<insert id="addUserByName" parameterType="pojo.Users">
    insert into mybatis.users(UUID,name,role,password) value(UUID(),#{name},#{role},#{password})
</insert>

MyBatis不可以直接多值传参,所以不能将多个变量直接通过接口传入,需要修改接口写法。
接口处使用@Param注解声明接口传递的参数传到SQL语句中的哪个位置。

package dao;

import org.apache.ibatis.annotations.Param;
import pojo.Users;

import java.util.List;

public interface UserMapper {
    int addUserByName(@Param("name") String newname,@Param("role") String newrole,@Param("password") String newpassword);
}

2.编写测试类并运行测试

@Test
public void addUserByName() {
  SqlSession sqlSession = MybatisUtil.getSqlSession();
  UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  mapper.addUserByName("InsertTest","user","a");
  sqlSession.commit();
  sqlSession.close();
}

image.png

三、删除

比如有这样一个需求:把上一段落增加的数据删除。

1.编写Mapper

<delete id="deleteUserByName" parameterType="pojo.Users">
    delete from mybatis.users where name = #{name}
</delete>
public interface UserMapper {
    int deleteUserByName(String name);
}

2.编写测试类并测试

@Test
public void delete(){
    SqlSession sqlSession = MybatisUtil.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    mapper.deleteUserByName("InsertTest");
    sqlSession.commit();
    sqlSession.close();
}

image.png

四、修改

经过了上面几项操作,相信对CRD操作有了,其实修改操作也不例外,可以试着自己先尝试一下,遇到问题再来看下面的代码。

1.编写mapper

<update id="updateByName" parameterType="pojo.Users">
  update mybatis.users
  set name=#{newname},
  password=#{newpass}
  where name = #{name}
</update>
public interface UserMapper {
    int updateByName(@Param("name") String name,@Param("newname") String newname,@Param("newpass") String newpass);
}

2.编写测试类并运行

@Test
public void update(){
    SqlSession sqlSession = MybatisUtil.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    mapper.updateByName("user3","user33333","333");
    sqlSession.commit();
    sqlSession.close();
}

image.png