Mybatis-lesson08-多对一案例-03-12

搭建环境

新建数据库表格,teacher 和student 两张表格 在SQLyog中

CREATE TABLE `teacher` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师'); 

CREATE TABLE `student` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  `tid` INT(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fktid` (`tid`),
  CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('2', '小红', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('3', '小张', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('4', '小李', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1');

1、导入lombok

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
</dependency>

2、pojo中新建实体类 Student Teacher 采用lombok方法 ,为后期可以在学生类中查到老师,需要属性中有一个老师的对象 (两个)

package com.feijian.pojo;

import lombok.Data;

@Data
public class Student {
    private int id;
    private String name;
    private Teacher teacher;
}
package com.feijian.pojo;

import lombok.Data;

@Data
public class Teacher {
    private int id;
    private String name;
}

3、建立Mapper接口  在java-dao文件夹下 (两个)

package com.feijian.dao;

public interface StudentMapper {
}
package com.feijian.dao;

import com.feijian.pojo.Teacher;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface TeacherMapper {
    @Select("select * from teacher where id=#{tid}")
    Teacher getTeacher(@Param("tid") int id);
}

4、建立Mapper.xml 文件可以建在resources 目录下,路径可以和java的dao路径一致 (两个)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.feijian.dao.StudentMapper">

</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.feijian.dao.TeacherMapper">

</mapper>

5、在核心配置文件mybatis-config.xml中绑定注册我们的Mapper接口或文件 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <properties resource="db.properties"/>

    <typeAliases>
        <!-- 实体类少的时候用,可以DIY       -->
       <!--  <typeAlias type="com.feijian.pojo.User" alias="User"/>-->

        <!-- 实体类比较多是,可以用package,但名字不能自己定义,或者用注释做别名定义   -->
        <package name="com.feijian.pojo"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/feijian/dao/UserMapper.xml"/>
        <mapper resource="com/feijian/dao/TeacherMapper.xml"/>
        <mapper resource="com/feijian/dao/StudentMapper.xml"/>
    </mappers>
</configuration>

6、测试是否成功 test 文件夹中

package com.feijian.dao;

import com.feijian.pojo.Teacher;
import com.feijian.pojo.User;
import com.feijian.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;

public class MyTest {
    public static void main(String[] args) {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        Teacher teacher = mapper.getTeacher(1);
        System.out.println(teacher);
        sqlSession.close();
    }
}

 

posted @ 2023-03-12 21:06  Rui2022  阅读(9)  评论(0编辑  收藏  举报