今天所建的软件包和类如下:
一、一对一(person和card身份证表)
1.首先创建实体类Card 和 Person
让Card类持有一个Person对象
2.创建one_to_one软件包
并创建 OneToOneMapper接口 和 OneToOneMapper.xml文件
配置MyBatisConfig.xml文件
<mappers><!--mappers引入映射配置文件-->
<!--mapper引入映射配置文件 resource指定映射配置文件的路径-->
<mapper resource="com/module3/one_to_one/OneToOneMapper.xml"/>
</mappers>
3.OneToOneMapper.xml文件
下面是xml文件头
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
注意OneToOneMapper.xml文件中的select标签的id要和接口中的方法名相同
4.测试
这里使用的是动态代理接口的方式,通过SqlSesssion对象调用getMapper(接口名.class)就可以获取到对应接口的实现类对象
使用动态代理接口的方式要求如下:
1.Mapper.xml文件中的namespace与mapper接口的类路径相同。
2.Mapper接口方法名和Mapper.xml中定义的每个statement的id和接口的方法名相同
3.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
二、一对多(班级和学生之间)
1.创建实体类classes 和 student
Claaaes类中持有Student泛型的List集合对象
2.创建软件包one_to_many
配置MyBatisConfig.xml中的mappers标签
<mappers><!--mappers引入映射配置文件-->
<!--mapper引入映射配置文件 resource指定映射配置文件的路径-->
<mapper resource="com/module3/one_to_many/OneToManyMapper.xml"/>
</mappers>
创建OneToManyMapper.xml文件和OneToManyMapper接口
OneToManyMapper.xml中的namespace是接口的全类路径,标签中的id要和接口中的方法名相同,参数类型、返回值类型也要和接口中相同,这样才能使用动态代理接口的方式
3.OneToManyMapper.xml
头文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4.OneToManyMapper接口
5.测试
三、多对多(学生和课程之间)
1.实体类
创建Course和Student实体类,使Student类中持有Course泛型的List对象
2.创建软件包many_to_many
配置MyBatisConfig.xml中的mappers标签
<!--mapper引入映射配置文件 resource指定映射配置文件的路径-->
<mapper resource="com/module3/many_to_many/ManyToManyMapper.xml"/>
</mappers>
创建ManyToManyMapper.xml文件和ManyToManyMapper接口
ManyToManyMapper.xml中的namespace是接口的全类路径,标签中的id要和接口中的方法名相同,参数类型、返回值类型也要和接口中相同,这样才能使用动态代理接口的方式
3.ManyToManyMapper.xml
4.ManyToManyMapper接口
5.测试
另一种方法可以将用到表中的属性名都写入一个大表,然后进行多表连接进行查询