5 使用Mapper的接口编写Mybatis项目

张创琦 2022.03.12

  1. 编写TeamMapper
  1. package com.kkb.mapper;
  2. import com.kkb.pojo.Team;
  3. import java.util.List;
  4. /**
  5. * ClassName: TeamMapper
  6. * Mapper接口
  7. * @author wanglina
  8. * @version 1.0
  9. */
  10. public interface TeamMapper {
  11. List<Team> queryAll();
  12. Team queryById(int teamId);
  13. int add(Team team);
  14. int add2(Team team);
  15. int update(Team team);
  16. int del(int teamId);
  17. }
  1. TeamMapper.xml 的配置
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <!--namespace=“完全限定名,接口的完全限定名”-->
  5. <mapper namespace="com.kkb.mapper.TeamMapper">
  6. <!-- 在这里直接复制Team.xml的内容即可 -->
  7. <!-- 查询所有结果 -->
  8. <select id="queryAll" resultType="com.kkb.pojo.Team">
  9. select * from team;
  10. </select>
  11. <!-- 根据ID查询 -->
  12. <!-- parameterType="参数的类型",目前只支持一个参数 -->
  13. <!-- #{id}表示参数 id-自定义, 只需要符合命名规范即可, 没有实际对应意义 -->
  14. <select id="queryById" parameterType="int" resultType="com.kkb.pojo.Team">
  15. select * from team where teamId=#{id} ;
  16. </select>
  17. <!-- 删除一个球队 -->
  18. <delete id="del">
  19. delete from team where teamId=#{id};
  20. </delete>
  21. <!-- 删除多个球队-测试ok -->
  22. <delete id="del2">
  23. delete from team where location=#{loc};
  24. </delete>
  25. <!-- 根据球队编号更新信息 -->
  26. <update id="update" parameterType="com.kkb.pojo.Team">
  27. update team set teamName=#{teamName}, location=#{location} where teamId=#{teamId}
  28. </update>
  29. <!-- 添加一个球队 -->
  30. <!-- parameterType="com.kkb.pojo.Team" 将对象作为参数.
  31. 注意 `` 符号的输入
  32. #{值} 值必须是实体类中的属性名称,其实就是占位符 ? -->
  33. <insert id="add" parameterType="com.kkb.pojo.Team">
  34. INSERT INTO `team` (`teamName`, `location`, `createTime`)
  35. VALUES (#{teamName}, #{location}, #{createTime})
  36. </insert>
  37. <insert id="add2" parameterType="com.kkb.pojo.Team">
  38. INSERT INTO `team` (`teamId`,`teamName`, `location`, `createTime`)
  39. VALUES (#{teamId}, #{teamName}, #{location}, #{createTime})
  40. </insert>
  41. </mapper>
  1. mybatis.xml 配置文件中注册映射文件
  1. <!-- 注册映射文件 -->
  2. <mappers>
  3. <mapper resource="com/kkb/pojo/Team.xml"/>
  4. <mapper resource="com/kkb/mapper/TeamMapper.xml"></mapper>
  5. </mappers>
  1. 编写测试类

getMapper 方法获取代理对象

  1. package com.kkb.test;
  2. import com.kkb.dao.TeamDao;
  3. import com.kkb.dao.TeamDaoImpl;
  4. import com.kkb.mapper.TeamMapper;
  5. import com.kkb.pojo.Team;
  6. import com.kkb.utils.MybatisUtil;
  7. import org.apache.ibatis.session.SqlSession;
  8. import org.junit.Test;
  9. import java.util.Date;
  10. import java.util.List;
  11. /**
  12. *ClassName: TeamDaoTest
  13. *TeamMapper的测试类
  14. *@author wanglina
  15. *@version 1.0
  16. */
  17. public class TeamMapperTest {
  18. // 调试成功,但是注意add和add2函数的利用,因为主键唯一的原因
  19. // 乱码问题尚未解决
  20. private SqlSession sqlSession = MybatisUtil.getSqlSession();
  21. @Test
  22. public void test01(){
  23. TeamMapper teamDao = sqlSession.getMapper(TeamMapper.class);
  24. //添加
  25. Team team = new Team();
  26. team.setTeamId(1001);
  27. team.setTeamName("勇士");
  28. team.setLocation("金州");
  29. team.setCreateTime(new Date());
  30. int num = teamDao.add(team);
  31. sqlSession.commit(); // 必须提交才能让增删改生效
  32. System.out.println(num);
  33. //更新
  34. Team team1 = teamDao.queryById(1001);
  35. team1.setTeamName("lina的球队");
  36. num = teamDao.update(team1);
  37. sqlSession.commit();//必须提交才能让增删改生效
  38. System.out.println(num);
  39. //删除
  40. num = teamDao.del(1001);
  41. sqlSession.commit();//必须提交才能让增删改生效
  42. System.out.println(num);
  43. //查询所有
  44. List<Team> teams = teamDao.queryAll();
  45. teams.forEach(t-> System.out.println(t));
  46. }
  47. }