mybatis学习2--Mapper动态映射

使用数据库
https://www.cnblogs.com/shihaiming/p/5853616.html
添加外键约束

alter table student add constraint student foreign key (tid)  references teacher(tid)

一、使用mapper动态代理:
1.修改student.xml命名空间地址

<!-- 将命名空间换成动态的映射文件的地址 -->
<mapper namespace="com.test3.mapper.StudentMapper">
 <select id="findTeacherByStuSid" parameterType="_int"
      resultType="Teacher">
      <!-- 虽然是查询的是student和teacher的两个表的数据,但是,查询到的结果会自动的根据返回的的数据类型进行装配  -->
     select student.*,teacher.* from student , teacher where
      teacher.tid = student.tid and student.sid = #{sid}
 </select>
 
 <insert id="insertAteacher" parameterType="Teacher">
      insert into teacher (name,sex,profession)values(#{name},#{sex},#{profession})      
 </insert>
 
 <select id="getAllTeacher" resultType="Teacher">
      select * from teacher        
 </select>
2.创建动态的映射文件 //定义的studentMapper的动态映射接口 public interface StudentMapper {
 public Teacher findTeacherByStuSid(int sid);
 
 public void insertAteacher(Teacher t);
 
 public List<Teacher> getAllTeacher();
 
}

3.通过Mapper代理对象进行数据库的操作

 String resource = "mybatis-config.xml";
      InputStream inputStream = Resources.getResourceAsStream(resource);
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      // 然后根据 sqlSessionFactory 得到 session
      SqlSession session = sqlSessionFactory.openSession();
    //获取到响应的映射对象
      StudentMapper2 mapper = session.getMapper(StudentMapper2.class);
      
      Teacher teacher = mapper.findTeacherByStuSid(12);
      System.out.println(teacher.toString());
      
      Teacher teacher2 = new Teacher();
      teacher2.setName("美女4号");
      teacher2.setSex("妞");
      teacher2.setProfession("教师");
      mapper.insertAteacher(teacher2);
      
      List<Teacher> teachersList = mapper.getAllTeacher();
      for (int i = 0; i < teachersList.size(); i++) {
          System.out.println(teachersList.get(i).toString());
      }

二、使用注解
1、定义注解的映射文件
//定义的studentMapper的动态映射接口

public interface StudentMapper2 {
 
 @Select("  select student.*,teacher.* from student , teacher where teacher.tid = student.tid and student.sid = #{sid}")
 public Teacher findTeacherByStuSid(int sid);
 
 @Insert("insert into teacher (name,sex,profession) values(#{name},#{sex},#{profession})")
 public void insertAteacher(Teacher t);
 
 @Select("select * from teacher")
 public List<Teacher> getAllTeacher();
 
}

2、修改mybatis-config.xml中的映射

<mappers>
  <mapper class="com.test3.mapper.StudentMapper2"></mapper>
 <!--      <mapper resource="./student.xml"/> -->
 </mappers>

3.使用方法和上面的mapper的动态代理相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值