00:00
诶,下边呢,我们来看这个引色的方法啊呃,这个方法的作用呢,非常明确,就是把你提供的一个实体类对象,我们去给你保存到数据库里面,所以说我们测试代码呢,首先呢,我们去创建一个实体类对象啊,封装要保存。找数据库的这个数据,你有一个。我们往数据库里边保存执行隐ER的操作哈,特别是我们买SQL数据库呢,它主键是自增的,我们就不需要指定这个ID了啊ID这个地方是到,然后呢,这个姓名呢,比如说EP01,工资呢是1000.00啊,这个年龄呢是23,这是我们测试的数据,然后呢,下一步我们是执行啊这个插入保存操作employee service。
01:00
在这呢,我们应该叫做一个哈吧,然后呢,Employee这个对象传进来,然后呢,这个效果啊,我们就应该去看数据库,就是在这儿呢,我们去把这个方法给建出来,建出来以后呢,我们用employee map.insert直接把它传进去。诶,然后咱们再去跑一下。哦,哪个地方还在报错哈。哦,这没有写分号,大意了啊,没有写分号,再重新跑一下F11。好,绿条没问题,看生成的SQ语句。给我们生成了隐色的语句是吧,也没问题,然后呢,过来这我们数据库表里边刷新我们这条数据呢,也确实是都给这个存进来了,哎,存进来以后我们就说哈,这个肯定呢,我们执行这个保存操作呢,没问题了。
02:06
那么。在这哈,我们跟大家说,呃,这个引ser的方法呢,其实还有一个功能。还有一个什么功能啊,它可以去返回我们数据库表呢,你自增的主键可以去返回我们数据库表啊,它自增的主键,嗯,但是这个它不是直接能够给我们生成的啊,你比如说我们现在再重新执行一下看啊,我们保存一个零二。把这数据稍微改了一下,我们重新保存,重新执行一下啊,我们这个执行完保存以后呢,我们去获取employee这个对象的组建字段值,把EPID呢拿出来我们看一看,哎,你不是说能够生成能够返回我们自增的组件的值吗?看看这个能不能获取得到呢,你看这个地方得得到的是那但是哈,数据库表里边这个数据呢,是能够这个插入的进来的。
03:16
那现在这个问题就是说呢,我们还需要做一些什么设置,能够把它的自增的主键值能够给我们回写到我们实体类对象里面,在这哈,咱们就这个东西没有什么可推理的哈,咱们就直接跟大家说了,它需要用到一个窄re体的value这样一个注解,在这个里边呢,给他指定一个strategy,然后呢,用这个identity这样一个策略,哎,就是告诉他的我们的数据库哈,它是以自增的方式去生成组件的啊呃,然后呢,呃,然后呢,这个我们需要通用map哈,把数据库自增的那个组件给我们写回到我们这个实体类的样PD这个属性里面。
04:03
哎,我们这样做了以后,我们再测试一下,哎,然后呢,重新跑哈。哎,你看这时候就em bid哈,就得到值了,就是这个八,然后呢,刷新一下没问题啊,跟我们数据库里边的这个也是一致的,这就是说明呢,我们如果想如如果我们需要用啊,需要用到这个自增的主键的值,需要来实体类,实体类里面哈,去设置一个get体的Y6啊,这样一个注解里边设置这样一个属性,哎,这个当然我们说肯定是需要设置到我们主键这个字段上面的啊,肯定是需要设置到主键字段上面的,而且呢,你现在所使用的数据库必须得是支持自自增的方式生成主键才可以这样去设置,你如果是像Oracle那种哈,是其他的主键生成方式,你就不能用这种方,你就不能这么写了,我们来这儿简单的看一下啊,我们打开这个官方的文档。
05:10
嗯,他专门有这么一小节,说的是这个展的Y6。哎,如果是像通过序列啊,这种方式来生成词库生成。呃,生成主线值,你看它这个地方该怎么写哈,我们把这儿呢,放大一下我们Oracle这种方式,咱们就不用代码去解示了,咱们给大家呢,看官方文档去解释一下就好了,你看呢,一样也是需要在ID这个字段上面使用我们generate的value这样一个注解street g呢,在这呢,你看也是一个identity哈,但是呢,后边需要再提供一个genator,哎,就是说呢,这个genator呢,就是说后边提供了一个搜狗语句,这个搜QL语句呢,就是我们Oracle里边查询啊,从序列里边查询得到ID值的这样一个搜QL语句,诶这个东西呢,作为这个资料哈,我们也可以给大家呢,放到这个,呃笔记里边,大家将来如果说你确实用到了奥瑞Le数据库了啊,这种基于序列的主件,你就可以用这种方法呢来进行设置。
06:14
哎,这个时候其实我们说的是generate value展映出去啊。哎,首先呢,我们说它的作用。是让我们这个通用啊,在执行我们这个insert操作之后回啊将数据库自动生成的。组建值。回写到实体类对象中,那么我们说一下这,记下它的这个用法。呃,这个用法呢,区分两种形式哈,呃,一种呢是自增主键,另外一种呢,是这个基于序列啊生成的这个主件,我们在这就简单写,就是这个序列的主键,这两种呢,还不太一样啊,我们现在呢,咱们刚才写的这个是自增的。
07:25
哎,所以说基于MYSQL这种哈,自动组件呢,我们其实也很容易去配置,但是呢,你如果是基于序列的啊,你就是多得就是说你需要在jaator这个属性里边多写一个搜索语句。啊,这就是我们说generated value这个注解哈,这个东西呢,其实还是挺有用的,我们什么时候会需要用到这个回血我们的主键值呢,这个其实大家有可能已经这个接触过了哈。我们在这儿来写一下,举个例子,呃,就是我们这个购物车,如果这个结账的话,呃,首先呢,我们需要去,呃,我们购物车结账的话呢,有很多东西需要去保存哈,这里边儿有很多个操作,呃,你比如说呢。
08:20
第一个操作我们需要去增加。我们商品的这个销量需要去减少商品的库存,这些呢,我们都这些地方用不着逐渐的回血哈,关键就是什么呢?我们得去生成这个订单数据,然后呢,下一步呢,给它封装到order对象中。然后呢,我们需要去保存这个order对象,这保存当然是往数据库里边保存哈,然后呢,我们还需要去生成那一系列的订单详情数据,因为你一个订单呢,很有可能买的是很多种商品,每一种商品呢,对应我们这样一个订单详情,这个订单详情数据哈,它需要封装到我们这个一个list里边,比如说呢,它的实体类呢是order item,那么这个时候呢,我们需要去保存所有的order item,但是需要注意的是,我们怎么能知道这个order item是属于就确定就属于这个order的呢?哎,这个时候呀,我们必须呢去给它建立这个关联关系,我们需要在这个order item中去设置order的组件值作为外键。
09:52
这样的话呢,当然是每一个每一个order item对象,这样的话,我们每一个order item对象就都知道他们属于哪一个order对象了。
10:03
啊是吧,然后呢,再下一步我们再去批量保存我们这个list里边的order,再完成结账,但是说后续呢,说不定你还会有些这个其他的这个操作。就是我们在保存order item的时候啊,你必须呢,就把order对象往数据库里边保存的时候,当时生成的那个组件的值给我们返回回来。哎,嗯,数据库自动生成主键值啊,你在这儿生成主键值,然后呢,我们给它。回。或者叫可写到实体类这象中,哎,你只有在这数据库生成了啊,数据库肯定会生成的,你生成了以后,你只有写回来,我后边order item才会用到,这就是一个我们典型的一个应用场景啊,所以说这个操作呢,大家还是要有一个印象啊,还是要需要去做一做的。
我来说两句