java注解JointTable如何给中间表指定主键

java注解JointTable如何给中间表指定主键,第1张

java 中注解联合表joint table可以使用如下方式:

@ManyToMany

@JoinTable(name="T_S",//指定表名

joinColumns={

@JoinColumn(name="TID")//指定主键

},

inverseJoinColumns={

@JoinColumn(name="SID")//指定主键

}

)

最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记。

类似下面这段代码一样获取插入后的主键

User user = new User();

usersetUserName("chenzhou");

usersetPassword("xxxx");

usersetComment("测试插入数据返回主键功能");

Systemoutprintln("插入前主键为:"+usergetUserId());

userDaoinsertAndGetId(user);//插入 *** 作

Systemoutprintln("插入后主键为:"+usergetUserId());

可以通过关系映射查询出来 请看下面

在mybatis中,没有级联的概念,但是可以利用集合来实现类似的功能。

mybatis30添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除 *** 作。因此在进行实体类多对多映射表设计时,需要专门建立一个关联对象类对相关实体类的关联关系进行描述。

插入关联表:

<insert id="insertWife" useGeneratedKeys="true" keyProperty="wid" parameterType="comcsslpojoWife">

insert into wife (name,h_id) values (#{name},#{husbandhid})

</insert>

关联映射:嵌入式、继承式 引入式等

先在数据库建立好主外键关系

在xml里面写一个resultMap作为返回类型,如果是多对一 用association 一对多用collection

例子

<!-- 多对一 -->

<resultMap id="wifeandhusband" type="wife">

<id property="wid" column="wid"></id>

<result property="wname" column="wname"></result>

<association property="husband" column="w_hid" javaType="comcsslpojoHusband">

<id property="hid" column="hid"></id>

<result property="name" column="name"></result>

</association>

</resultMap>

<!-- 一对多 -->

<resultMap id="husbandandwife" type="comcsslpojoHusband">

<id property="hid" column="hid"></id>

<result property="name" column="name"></result>

<collection property="wifes" ofType="wife"> --ofType集合中的类型

<id property="wid" column="wid"></id>

<result property="wname" column="wname"></result>

</collection>

</resultMap>

<select id="selectWife" resultMap="wifeandhusband">

select w,h from wife w left join husband h on wh_id=hhid

</select>

注意:

1、关联查询一定要带有关联对象的id(主外键),否则集合只会有一条记录存在(认为你查询的是一个对象)

如:

select hname,hage,wwname from wife w left join husband h on hhid=wh_id

2、表连接中不同表有同名字段的时候:a和b都有name字段

<resultMap type="b" id="b">

<id property="bid" column="id"/>

<result property="name" column="name"/>

<association property="a" javaType="a">

<id property="aid" column="aid"/>

<result property="name" column="aname"/>

</association>

</resultMap>

<select id="select" resultMap="b">

select aid aid,aname aname,bid,bname from a,b where aid=bid

</select>

数据结构的主键,还是字段的主键?

表结构是否存在主键select count(1) into primaryKeyExistedCount from user_constraints t where ttable_name = upper('Test') and tconstraint_type = 'P';

字段中某主键是否存在:select count() from tab_name where UUID='Test'

java写代码解决主外健的问题,

1、主键:

若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键。主键不能重复,且只能有一个,也不允许为空。定义主键主要是为了维护关系数据库的完整性。

2、外键:

外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。

3、索引

索引是对表中一个或多个列的值进行排序的结构。

1) 应该创建索引的列的特点:

① 在经常需要搜索的列上创建索引,可以加快搜索的速度;

② 在作为主键的列上创建索引,强制该列的唯一性;

③ 在经常用在连接的列上创建索引,主要是一些外键,可以加快连接的速度;

④ 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,可以利用索引的排序加快查询;

⑤ 在经常使用在WHERE子句中的列上创建索引,加快条件的判断速度。

2) 不应该创建索引的列的特点:

① 在查询中很少使用的列上不应该创建索引,因为这些列很少使用到,因此有索引或无索引,并不能提高查询速度,相反由于增加了索引,反而降低了系统维护速度,增大了空间需求;

② 在只有很少数据值的列上不应该创建索引,很少数据值的列如性别等,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大,增加索引,并不能明显加快检索速度;

③ 当修改性能远远大于检索性能时,不应该创建索引,因为改性能和检索性能是互相矛盾的,当增加索引时,会提高检索性能,但会降低修改性能,当减少索引时,会提高修改性能,但会降低检索性能。因此,当修改性能远大于检索性能时,不应该创建索引。

3) 可以在数据库设计器中创建三种索引:

① 唯一索引:

不允许其中任何两行具有相同索引值的索引。

② 主键索引:

表的某一列或列组合,其值唯一标识表中的每一行,该列或列组合称为表的主键。为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。

③ 聚集索引:

聚集索引:聚集索引表示表中存储的数据按照索引的顺序存储。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。

聚集索引实例:字典默认按字母顺序排序,如知道某个字的读音可根据字母顺序快速定位。

非聚集索引:非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,需要查询两个地方才能查找到数据。一个表可以包含多个非聚集索引,可以为查找数据时常用的每个列创建一个非聚集索引。

非聚集索引实例:如需查询某个生僻字,则需按字典前面的索引,如按偏旁进行定位,找到该字对应的页数,再打开对应页数找到该字。

与非聚集索引相比,聚集索引通常提供更快的数据访问速度,但对数据更新影响较大。

4)索引的优点:

加快对数据的检索。

5)索引的缺点:

① 减慢数据录入的速度;

② 增加了数据库的尺寸大小。

4、主键和外键的关系:

外键是另一个表的主键,主键是可以被外键有效引用的对象。若A表中的一个字段,是B表的主键,则它可以是A表的外键。

以上就是关于java注解JointTable如何给中间表指定主键全部的内容,包括:java注解JointTable如何给中间表指定主键、mybatis insert 返回主键 java代码怎么取、id为表中的主键 name是要显示的内容,Fid代表组织的父节点,使用JAVA编写函数,以树形结构的形式打印输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9411109.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存