一、查询
查询操作在第一个MyBatis程序中已经有所体现,在这里我们在上一节的基础上增加约束条件。
比如有这样一个需求:查询指定姓名的信息显示。
和上一节基本流程相同,只是需要传参,比如这个需求就是需要传递姓名。
1.编写mapper
<select id="queryUsersByName" resultType="pojo.Users">
select * from mybatis.users where name = #{name}
</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();
}
二、增加
比如有这样一个需求:增加一个姓名为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();
}
三、删除
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();
}
四、修改
经过了上面几项操作,相信对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();
}