精华内容
下载资源
问答
  • 数据库中有teacher表表中有外码user_id,与user表一对一关联 那么生成teacher表对应的Entity时 不仅要有User user属性,也应有Integer userId属性 2. 之前的做法 之前碰到类似业务场景时,我只生成一个...

    1. 举例

    在数据库中有teacher表,表中有外码user_id,与user表一对一关联
    在这里插入图片描述
    那么在生成teacher表对应的Entity时
    不仅要有User user属性,也应有Integer userId属性
    在这里插入图片描述

    2. 之前的做法

    之前在碰到类似业务场景时,我只生成一个User user属性,而没有生成Integer userId属性。
    这样做的弊端有下:

    (1)如果需要封装一个teacher对象作为参数去执行方法,而又需要对userId赋值:

    //老师
    Teacher teacher = new Teacher();
    //弊端:赋值userId很麻烦:
    //1. 先生成一个user对象
    User user = new User();
    user.setUserId(userId);
    //2. 再把这个user对象赋给teacher
    teacher.setUser(user);
    

    这样赋值方法相当复杂,每次赋值都不得不new一个User类的对象

    (2)在查询出一个Teacher类的对象时,如果只需要userId,而不需要这个User类的对象的其他信息:

    //某个查询方法
    Teacher teacher = teacherMapper.getTeacher(teacherId);
    //弊端:如果需要获取id,则必须先获取user,再获取id
    Integer userId = teacher.getUser().getUserId();
    

    3. 优化后,优点

    其实优点就是能有效避免了上述做法的这些弊端。传值或返值,都不需要再以一个User类的对象作为媒介

    4. 探索:这么做可能存在的问题?

    4.1. 返参时,查询出的userId赋值到哪?

    比如有一个resultMap
    在这里插入图片描述
    那么进行查询时,可能有三种情况:

    (1) 只有userId有值
    (2) 只有user.userId有值
    (3) userId和user.userId都有值

    带着这样的疑问,我进行了测试:
    在这里插入图片描述
    得出最终结论:
    返参时,userId和user.userId都会有值

    4.1. 传参时,userId和user.userId同时有值

    这种做法非常奇葩…几乎不会碰到有这样的情况,因此没有尝试,有兴趣的可以尝试一下。

    展开全文
  • 一、 设一数据库,包括四个:学生(Student)、课程(Course)、成绩(Score)以及教师信息(Teacher)。四个的结构分别如1-1的(一)~(四)所示,数据如1-2的(一)~(四)所示。用SQL语句创建四个并...

    一、            设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。

    表1-1数据库的表结构

    表(一)Student (学生表)

    属性名

    数据类型

    可否为空

    含 义

    Sno

    Char(3)

    学号(主码)

    Sname

    Char(8)

    学生姓名

    Ssex

    Char(2)

    学生性别

    Sbirthday

    datetime

    学生出生年月

    Class

    Char(5)

    学生所在班级

    表(二)Course(课程表)

    属性名

    数据类型

    可否为空

    含 义

    Cno

    Char(5)

    课程号(主码)

    Cname

    Varchar(10)

    课程名称

    Tno

    Char(3)

    教工编号(外码)

    表(三)Score(成绩表)

    属性名

    数据类型

    可否为空

    含 义

    Sno

    Char(3)

    学号(外码)

    Cno

    Char(5)

    课程号(外码)

    Degree

    Decimal(4,1)

    成绩

    主码:Sno+ Cno

    表(四)Teacher(教师表)

    属性名

    数据类型

    可否为空

    含 义

    Tno

    Char(3)

    教工编号(主码)

    Tname

    Char(4)

    教工姓名

    Tsex

    Char(2)

    教工性别

    Tbirthday

    datetime

    教工出生年月

    Prof

    Char(6)

    职称

    Depart

    Varchar(10)

    教工所在部门

    表1-2数据库中的数据

    表(一)Student

    Sno

    Sname

    Ssex

    Sbirthday

    class

    108

    曾华

    1977-09-01

    95033

    105

    匡明

    1975-10-02

    95031

    107

    王丽

    1976-01-23

    95033

    101

    李军

    1976-02-20

    95033

    109

    王芳

    1975-02-10

    95031

    103

    陆君

    1974-06-03

    95031

    表(二)Course

    Cno

    Cname

    Tno

    3-105

    计算机导论

    825

    3-245

    操作系统

    804

    6-166

    数字电路

    856

    9-888

    高等数学

    831

    表(三)Score

    Sno

    Cno

    Degree

    103

    3-245

    86

    105

    3-245

    75

    109

    3-245

    68

    103

    3-105

    92

    105

    3-105

    88

    109

    3-105

    76

    101

    3-105

    64

    107

    3-105

    91

    108

    3-105

    78

    101

    6-166

    85

    107

    6-166

    79

    108

    6-166

    81

    表(四)Teacher

    Tno

    Tname

    Tsex

    Tbirthday

    Prof

    Depart

    804

    李诚

    1958-12-02

    副教授

    计算机系

    856

    张旭

    1969-03-12

    讲师

    电子工程系

    825

    王萍

    1972-05-05

    助教

    计算机系

    831

    刘冰

    1977-08-14

    助教

    电子工程系

    1、 查询Student表中的所有记录的Sname、Ssex和Class列。

    2、 查询教师所有的单位即不重复的Depart列。

    3、 查询Student表的所有记录。

    4、 查询Score表中成绩在到之间的所有记录。

    5、 查询Score表中成绩为,或的记录。

    6、 查询Student表中“”班或性别为“女”的同学记录。

    7、 以Class降序查询Student表的所有记录。

    8、 以Cno升序、Degree降序查询Score表的所有记录。

    9、 查询“”班的学生人数。

    10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)

    11、查询每门课的平均成绩。

    12、查询Score表中至少有名学生选修的并以开头的课程的平均分数。

    13、查询分数大于,小于的Sno列。

    14、查询所有学生的Sname、Cno和Degree列。

    15、查询所有学生的Sno、Cname和Degree列。

    16、查询所有学生的Sname、Cname和Degree列。

    17、 查询“”班学生的平均分。

    18、假设使用如下命令建立了一个grade表:

    create table grade(low  int,upp  int,rank  nvarchar(200))

    insert into grade values(90,100,'A')

    insert into grade values(80,89,'B')

    insert into grade values(70,79,'C')

    insert into grade values(60,69,'D')

    insert into grade values(0,59,'E')

    现查询所有同学的Sno、Cno和rank列。

    19、查询选修“-105”课程的成绩高于“”号同学成绩的所有同学的记录。

    20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。

    21、查询成绩高于学号为“”、课程号为“-105”的成绩的所有记录。

    22、查询和学号为的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

    23、查询“张旭“教师任课的学生成绩。

    24、查询选修某课程的同学人数多于人的教师姓名。

    25、查询班和班全体学生的记录。

    26、查询存在有分以上成绩的课程Cno.

    27、查询出“计算机系“教师所教课程的成绩表。

    28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。

    29、查询选修编号为“-105“课程且成绩至少高于选修编号为“-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。

    30、查询选修编号为“-105”且成绩高于选修编号为“-245”课程的同学的Cno、Sno和Degree.

    31、 查询所有教师和同学的name、sex和birthday.

    32 、查询所有“女”教师和“女”同学的name、sex和birthday.

    33、 查询成绩比该课程平均成绩低的同学的成绩表。

    34、查询所有任课教师的Tname和Depart.

    35、查询所有未讲课的教师的Tname和Depart.

    36、查询至少有名男生的班号。

    37、查询Student表中不姓“王”的同学记录。

    38、查询Student表中每个学生的姓名和年龄。

    39、查询Student表中最大和最小的Sbirthday日期值。

    40、以班号和年龄从大到小的顺序查询Student表中的全部记录。

    41、查询“男”教师及其所上的课程。

    42、查询最高分同学的Sno、Cno和Degree列。

    43、查询和“李军”同性别的所有同学的Sname.

    44、查询和“李军”同性别并同班的同学Sname.

    45、查询所有选修“计算机导论”课程的“男”同学的成绩表。

    创建表:

    create databaseData2018_1go

    useData2018_1go

    create table Student--学生表

    (

    Snonvarchar(200) primary key,--学号

    Sname nvarchar(200) not null,--姓名

    Ssex nvarchar(200) not null,--性别

    Sbirthday datetime,--生日

    Class nvarchar(200)--班级

    )go

    create table Course--课程表

    (

    Cnonvarchar(200) primary key,--课程号

    Cname nvarchar(200) not null,--课程名

    Tno nvarchar(200) not null--教工编号

    )go

    create table Score--成绩表

    (

    Snonvarchar(200) not null,--学号

    Cno nvarchar(200) not null,--课程号

    Degree decimal(4,1)--成绩

    )go

    create table Teacher--教师表

    (

    Tnonvarchar(200) primary key,--教工编号

    Tname nvarchar(200) not null,--教工姓名

    Tsex nvarchar(200) not null,--教工性别

    Tbirthday datetime,--教工出生年月

    Prof nvarchar(200),--职称

    Ddpart nvarchar(200) not null--教工所在部门

    )insert into Student values('108','曾华','男','1997-09-01','95003')insert into Student values('105','匡华','男','1975-10-12','95031')insert into Student values('107','王丽','女','1976-10-23','95033')insert into Student values('101','李军','男','1974-10-12','95033')insert into Student values('109','王芳','女','1973-10-12','95031')insert into Student values('103','陆君','男','1972-10-12','95031')insert into Course values('3-105','计算机导论','825')insert into Course values('3-245','操作系统','804')insert into Course values('6-166','数字电路','856')insert into Course values('9-888','高等数学','831')insert into Score values('103','3-245',86)insert into Score values('105','3-245',75)insert into Score values('101','3-245',90)insert into Score values('105','3-105',77)insert into Score values('103','3-105',88)insert into Score values('107','9-888',72)insert into Score values('107','3-245',66)insert into Score values('109','3-245',71)insert into Score values('103','9-888',89)insert into Score values('108','3-245',96)insert into Teacher values('804','李成','男','1958-12-20','副教授','计算机系')insert into Teacher values('825','李三','男','1958-11-20','副教授','电子工程系')insert into Teacher values('856','赵四','女','1958-09-20','副教授','计算机系')insert into Teacher values('831','鼠标','男','1958-07-20','副教授','电子工程系')select *fromStudentselect *fromTeacherselect *fromScoreselect *from Course

    展开全文
  • mybatis+mysql 关于两个张表有相同属性名查询会报错的 ...mybatis中查询两张表中有相同属性名会报错 t_class表 t_teacher表   两张表的id属性名相同,当我执行下面的查询语句的时候,会报错...

    mybatis+mysql 关于两个张表有相同属性名查询会报错的

    注意,在MYSQL Wordbench中查询时是可以通过的。

    在mybatis中查询两张表中有相同属性名会报错

    t_class表                                                t_teacher表

            

    两张表的id属性名相同,当我执行下面的查询语句的时候,会报错 => Column 'id' in order clause is ambiguous,

    <select id="findGradeClassByDescribe" parameterType="Integer" resultMap="gradeClassResult">
        select * from t_class t1,t_teacher t2 WHERE t1.describe=#{describe} and t2.id=t1.teacher
    </select>

     

    正确情况下,

    1)把表的属性其中一个改了

    t_class表                                                       t_teacher表

                  

    2)在select语句中写别名

    利用as为查询的列起别名

    例如

    <select id="findGradeClassByDescribe" parameterType="Integer" resultMap="gradeClassResult">

        select t_class.id class_no, teacher, count, describe,t_teacher.id,password from t_class t1,t_teacher t2 WHERE t1.describe=#{describe} and t2.id=t1.teacher

    </select>

     

     

     

     

    展开全文
  • 设教学数据库中有三个基本: 学生 S(SNO,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别;选课表 SC(SNO,CNO,GRADE),其属性表示学生的学号、所学课程的课程号和成绩;课程 C(CNO,CNAME...

    设教学数据库中有三个基本表:

    学生表 S(SNO,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别;选课表 SC(SNO,CNO,GRADE),其属性表示学生的学号、所学课程的课程号和成绩;课程表 C(CNO,CNAME,TEACHER),其属性表示课程号、课程名称和任课教师姓名。 下面的题目都是针对上述三个基本表操作的(原题S#、C#这样子写法在查询的时候会报错,这里就用SNO、CNO代替吧,在naticat里面“#”这个是注释。。。)

    其实这道题网上也有,但是我自己试了很多答案是错的,服了。我自己做一遍吧。。。

    分析:建表,选课表SNO、CNO是外键

    设计表就自己建,下面给出表数据:

    学生表 S(SNO,SNAME,AGE,SEX)

    选课表 SC(SNO,CNO,GRADE)

    课程表 C(CNO,CNAME,TEACHER)

    第(2)题用的表 SC_C(C#,CNAME, AVG_GRADE)

    (1)写出检索 全是 女同学 选修的课程的课程号的SQL语句。

    网上的答案:

    SELECT cno FROM sc where cno not in (SELECT cno from s,sc WHERE s.sno=sc.sno and sex = '女');

    我查出来的是空的(查出来应该是男同学单独选的,这里没有所以为空)

     

    错的。我觉得应该把SQL语句里面的条件“女”改为“男”。

    SELECT cno FROM sc where cno not in (SELECT cno from s,sc WHERE s.sno=sc.sno and sex = '男');
    

    看看结果

    查出来了。

    我自己的分析:选课表里面,肯定是 不是男的同学 就是女的同学(应该没有鬼。。。)选出全部的课程号,除去男同学选的(包括有男有女选的课程号)剩下的就是全是女同学选的,换句话讲,就是只有女同学选这个课程号。

    这里不知道理解有没有错,欢迎各位看官评论区讨论交流。。。

    (2)写出下列插入操作的SQL语句:把SC表中每门课程的平均成绩插入到另一个已存在的表SC_C(C#,CNAME, AVG_GRADE)中,其中 AVG_GRADE 为每门课程的平均成绩。

    insert into SC_C(cno,cname,AVG_GRADE)
    select c.cno,c.cname,avg(GRADE) from sc,c
    where sc.cno=c.cno group by c.cno,cname;

    查询结果

    后面2题暂时先把网上答案贴上(也是错的。。。仅供参考) 

    (3)试写出下列删除操作的SQL语句:从SC表中把WU老师的女学生选课元组删去。

    delete from sc where 
    sno in (select sno from s where sex = '女')
    and cno in (SELECT cno from c where teacher = 'WU');
    

     

    (4)写出检索每门课程前五名的学生姓名。

    SELECT SNAME
    FROM S,SC 
    WHERE S.SNO=SC.SNO
    AND SC.GRADE IN
    (SELECT TOP 5 GRADE FROM SC GROUP BY CNO ORDER BY GRADE DESC)

     

     

     

     

     

     

    展开全文
  • select语句多联合查询(二)

    千次阅读 2018-12-11 22:44:22
    (所有表都select语句多表联合查询(一))...根据题意我们只需要用到一个表就是teacher表,但要求薪水差额必定要用到两次薪水这个属性,我们不妨定义一次teacher表为T1,再定义一次该表为T2,了T1.Salary和T2...
  • 一、 设一数据库,包括四个:学生(Student)、课程(Course)、成绩(Score)以及教师信息(Teacher)。四个的结构分别如1-1的(一)~(四)所示,数据如1-2的(一)~(四)所示。用SQL语句创建四个并...
  • 使用MyBatis联查询

    2021-04-09 16:10:28
    实体类中有属性、getter and setter、无参有参构造方法、toString() 注意:如果对应mapper中启用了二级缓存,则对应的实体类要实现序列化Serializable接口; 11)创建mapper文件StudentMapper.xml、TeacherMapper....
  • 这个项目使用sqlite和sequelize .... 我有一个单独的UserInGroup来处理多对多关系,但对于教师的一对多关系,我已经重命名了关系'teacher'(因此属性是teacherId) .db.group.belongsTo(db.user...
  • 最近开发一个教务管理系统,数据库中有教师Teacher)、学生(Student)等,其中属性:出生日期(Birthday)为DATE类型。 执行更新教师操作时,发现未改动教师的出生日期但更新后的日期却减少了一天,最初...
  • 基础配置persistence.xml首先应src目录新建META-INF文件夹,将persistence.xml文件放入persistence.xml内容首先来讲一下单继承假设这里三个实体类person|           |teacher        ...
  • 最近开发一个教务管理系统,数据库中有教师Teacher)、学生(Student)等,其中属性:出生日期(Birthday)为DATE类型。 执行更新教师操作时,发现未改动教师的出生日期但更新后的日期却减少了一天,最初...
  • 最近开发一个教务管理系统,数据库中有教师(Teacher)、学生(Student)等,其中属性:出生日期(Birthday)为DATE类型。执行更新教师操作时,发现未改动教师的出生日期但更新后的日期却减少了一天,最初以为是...
  • 最近开发一个教务管理系统,数据库中有教师(Teacher)、学生(Student)等,其中属性:出生日期(Birthday)为DATE类型。执行更新教师操作时,发现未改动教师的出生日期但更新后的日期却减少了一天,最初以为是...
  • inverse属性默认是false的,就是说关系的两端都来维护关系。这个意思就是说,如一个Student, Teacher和...那么什么时候插入或删除TeacherStudent表中的记录来维护关系呢?用hibernate时,我们不会显示的对...
  • 首先,三个实体对象User,Student, Teacher其中三者共同的属性是name,password,fullname,均定义User,Student和Teacher继承User用每个类分层的方式进行mapping映射,只需要用到一个userinfo就可以描述以上...
  • 现在两个表一张是teacher表一张是dept表,现在我想把teacher表中的dept属性设置为外键,关联dept表中的code属性。具体情况如图;好了,基本情况介绍完毕,现在开始教你们navicatformysql怎么设置外键。工具/原料...
  • navicat如何设置外键

    2018-08-25 16:38:00
    博客园首页新随笔联系管理订阅订阅 随笔- 122 文章- 0 评论- 9 ...现在两个表一张是teacher表一张是dept表,现在我想把teacher表中的dept属性设置为外键,关联dept表中的code属性。具体情况如图;好了,...
  • navicat for mysql:navicat如何设置外键

    万次阅读 2018-05-26 17:36:57
    现在两个表一张是teacher表一张是dept表,现在我想把teacher表中的dept属性设置为外键,关联dept表中的code属性。具体情况如图;好了,基本情况介绍完毕,现在开始教你们navicat for mysql 怎么设置外键。工具/...
  • 实际上我数据库中有这个数据,看idea下面的语句好像也成功找到了。 ![图片说明](https://img-ask.csdn.net/upload/202005/07/1588857891_860656.png) 及过查询,可能是action写错或者是表单控件中的name与...
  • 如何使用inverse="ture

    2008-03-23 18:23:00
    到底哪用inverse="ture"? inverse属性默认是false的,就是说关系的两端都来维护关系。这个意思就是说,如一个Student, Teacher和...那么什么时候插入或删除TeacherStudent表中的记录来维护关系呢?...
  • inverse解疑

    2009-06-17 13:53:00
    来自互联网!inverse的原理如下:inverse属性默认是false的,就是说关系的两端都来维护关系。这个意思就是说,如一个Student, ...那么什么时候插入或删除TeacherStudent表中的记录来维护关系呢?用hibernate时,
  • Navicat数据库模型设计总结:

    千次阅读 2019-06-28 17:06:41
    一,独立的属性必须分开。多对多关系可以合并一张表上。...所以查询时直接对应teacher表中的teacherid。 3,scoretype实际开发中会拓展,如(期中,期末考试,平时小测)所以不能放置student_s...
  • Hibernate学习(三)

    2011-12-07 10:35:45
    说实话,这是看视频学习最烂的阶段,也不知道为什么Hibernate会讲的这么差 利用注解将实体类的属性持久化到数据库...会数据库创建名为Teacher,当然可以指定一个表名,如下: @Entity @Table(name="Teacher")
  • Mybatis一对多处理

    2020-10-08 19:51:04
    这是student表和teacher表内容 pojo: 我们先写一个接口来查询出所有老师的记录 映射文件: 测试代码:打印出教师对象内容 运行结果: 我们可以发现,teacher对象的students没有成功显示,这是因为属性名...
  • Join是SQL中一个非常基本的概念,有时会让人感到困惑。当我们需要找到涉及多个的...假设我们两个,一个名为STUDENT的,另一个名为TEACHER。 第一个“STUDENT": 学生的参考详细信息,第二个“TEA...
  • Mybatis 映射器

    2017-09-22 13:18:55
    新建一个JAVA项目,加入对应的架包,配置Mybatis的核心配置文件、日志文件种数据库属性文件(之前写的博客中有)。 新建实体类Student和Teacher,如果你提供有参构造方法,必须把无参构造方法写出来 ...
  • 举个例子,现在个tab_teacher表,它2个字段,分别是teacher_id和teacher_name,现在我用persist(new Teacher(1,"王老师"))这样插入报错,但是我实体中加个只有teacher_name属性的构造方法,也就是用persist(new...
  • C#视频—继承

    热门讨论 2018-06-03 11:39:48
    继承:从表面意思看就是子承父业,面向对象即子类可以继承父类属性、方法等。 C#如何继承请看下面的例子: Public class Teacher : Person //Teacher 继承了 Person { } 继承的性质 1.继承性 2....
  • 这之前我是写的学生和教室类,后来感觉教室不合适,就把教室改成老师类了,配置文件和属性都没有改变,只把用到教室的地方换成了老师; 求大神帮忙 ## 这里是applicationContext.xml的全部配置 ``` ...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

在teacher表中有属性