Mybatis框架技术总结(二),Java后端工程师需要掌握的知识

SELECT c.id cid,c.name cname,s.id sid,s.name sname,s.age sage FROM classes c,student s WHERE c.id=s.cid

  1. 在MyBatisConfig.xml中引入配置文件

  1. 测试类

@Test

public void selectAll() throws Exception{

//1.加载核心配置文件

InputStream is = Resources.getResourceAsStream(“MyBatisConfig.xml”);

//2.获取SqlSession工厂对象

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

//3.通过工厂对象获取SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession(true);

//4.获取OneToManyMapper接口的实现类对象

OneToManyMapper mapper = sqlSession.getMapper(OneToManyMapper.class);

//5.调用实现类的方法,接收结果

List classes = mapper.selectAll();

//6.处理结果

for (Classes cls : classes) {

System.out.println(cls.getId() + “,” + cls.getName());

List students = cls.getStudents();

for (Student student : students) {

System.out.println(“\t” + student);

}

}

//7.释放资源

sqlSession.close();

is.close();

}

  1. resultMap:用来自定义结果集和实体类的映射
  • id属性:相当于这个resultMap的唯一标识

  • type 属性:用来指定映射到哪个实体类

  1. id 标签:用来指定主键列的映射规则
  • column 属性::数据库表的列名

  • property 属性:: 对应实体类的属性名

  1. result 标签:用来指定普通列的映射规则
  • column 属性::数据库表的列名

  • property属性: : 对应实体类的属性名

  1. association标签:配置被包含对象的映射规则
  • property属性:被包含对象的变量名

  • javaType属性:被包含对象的数据类型

  1. collection标签:配置被包含集合对象的映射规则。
  • property属性:被包含集合对象的变量名

  • ofType属性:集合中保存的对象数据类型

2.4、多表模型多对多操作


  1. 多对多模型:学生和课程,一个学生可以选择多门课程、一个课程也可以被多个学生所选择。

  2. 代码实现

  • 步骤一:sql语句准备

CREATE TABLE course(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(20)

);

INSERT INTO course VALUES (NULL,‘语文’);

INSERT INTO course VALUES (NULL,‘数学’);

CREATE TABLE stu_cr(

id INT PRIMARY KEY AUTO_INCREMENT,

sid INT,

cid INT,

– sid指向学生表的主键id

– cid指向课程表的主键id

CONSTRAINT sc_fk1 FOREIGN KEY (sid) REFERENCES student(id),

CONSTRAINT sc_fk2 FOREIGN KEY (cid) REFERENCES course(id)

);

INSERT INTO stu_cr VALUES (NULL,1,1);

INSERT INTO stu_cr VALUES (NULL,1,2);

INSERT INTO stu_cr VALUES (NULL,2,1);

INSERT INTO stu_cr VALUES (NULL,2,2);

  • 步骤二:实体类和接口

public class Course {

private Integer id; //主键id

private String name; //课程名称

//省略get/set,有参/无参方法

}

//在学生Student实体类当中增添变量,表示当前学生选择了哪些课程

public class Student {

private Integer id; //主键id

private String name; //学生姓名

private Integer age; //学生年龄

private List courses;//学生所选择的课程集合

//省略get/set,有参/无参方法

}

public interface ManyToManyMapper {

//查询全部

public abstract List selectAll();

}

  • 步骤三:配置文件
<?xml version="1.0" encoding="UTF-8" ?>

SELECT sc.sid,s.name sname,s.age sage,sc.cid,c.name cname FROM student s,course c,stu_cr sc WHERE sc.sid=s.id AND sc.cid=c.id

  • 步骤四:在MyBatisConfig.xml中引入配置文件

  • 步骤五:测试

@Test

public void selectAll() throws Exception{

//1.加载核心配置文件

InputStream is = Resources.getResourceAsStream(“MyBatisConfig.xml”);

//2.获取SqlSession工厂对象

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(i

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值