00:00
好了,那么什么时候我们会用到常用注解呢?常用注解都有哪些呢?我们呢,先来看一下我们这个大纲啊,这个大纲里面呢,有这样的几个注解。啊,一个是table name,一个是table ID,一个是table field,还有一个是table logic。啊,那这并不是我们买贝斯plus当中的所有的注解,但是这几个注解呢,是最为常见的几个注解,所以呢,也是最为重要的几个注解,我们先学习一下这四个,其他的注解呢,我们,呃,我会在项目当中给大家扩展,好了,我们先来想一种情况啊,这种情况是这样的。呃,在我们的这个开发的过程当中,有的时候呀,我们数据库的这个表的这个设计啊,他不是由我们的程序员设计的。呃,在有一些比较大型的公司里面,他的这个角色分工比较明确的时候呢,有专门的数据库设计工程师。
01:02
啊,或者是说呢,由专门的架构级别的工程师,或者是一些高级工程师,他来把数据库先设计出来,然后由一些初中级开发工程师呢,在根据这个数据库设计呢,做具体的实现,那么有一些专业的这个数据库设计,呃,人员呢,他们也是有一些数据库设计的编码规范的,比如说在数据库定义的时候呢,有的时候我们的这个表明啊,可能需要有一些前缀,因为当我们的这个呃。业务流程非常复杂的时候,我们这个一个数据库里面可能有几十张表,甚至是上百张表,那这个时候表多了的话呢,那就不好管理了,那怎么去管理这些表呢?一般情况下我们会把这个表呢,分成不同的业务,比如说所有的和用户相关的业务我们加一个前缀,所有的和支付相关的业务我们加另外一些前缀,对吧?所有的和商品相关的业务,我们再加一些其他的前缀,那么这样的话呢,就造成了我们的这个数据库表可能呢,并不是一个user表,然后对应我们一个user实体,有可能我们数据库表是这样定义的,比如说。
02:08
我在这个地方重命名一下。比如说加一个。这个T前缀啊,就是table的一个意思啊,有一些公司他就会有这样的一个规范要求,如果你表不太复杂,那所有的表前面要加一个TT的意思呢,就是table的意思啊,如果我们的表比较复杂啊,比如说我这个,呃,项目比较大,好几十张表,那么所有关于用户的表我都加user前缀。比如说加user,然后呢下划线,比如说用户表me br啊,比如说管理员表。Admin对不对?比如说用户登录表user me br下划线。Login明白吧,比如说用户角色表,User下划线,然后肉。对吧,等等啊,也就是说这个呢,是有一个表前缀啊,有一个表前缀,然后呢,跟商品相关的表,比如说呢,我嗯都加那个。
03:06
呃,商品business吧。BU吧,我就加这么一个前缀啊,Business,然后pro对吧,然后B,然后下划线type,这是跟商品相关的表,比如说跟支付相关的表都加配前缀配,然后下划线啊,比如说那个。呃,订单order,然后配。啊,然后下划线,比如说这个,呃,订单条目order item。啊等等等等,所以呢,每一个表它是都是有前缀的,那在这个地方我就简单的加一个,比如说我就加一个提前缀,好,那么加完这个提前缀之后。我们在我们的应用程序当中应该怎么写?我先举一个简单的例子,比如说刚才咱们自定义的那个map。自定义的这个map呢。也就是说这个例子啊。
04:00
MY,刚才我们写的最后的这个例子,然后他调用谁啊,他是不是调用这个。接口啊,这个接口对应谁啊,这个接口是不是对应这个circle啊,那么很简单,这个改起来很简单,因为我们数据库表当中的我们的t user。是他的名字,所以这面我们的SQL语句当中,我直接写t user。是不是就可以了,就完成了。我们的这样的一个业务开发,所以呢,我来测试一下先。好,接下来呢。我们来。看一下。是不是就执行了我们正确的SQL查询呀,那这个地方是不是就变成了TOC啊,当然这个道理很简单,因为SQL语句就应该长这样嘛,所以我们就直接去改变了SQL语句,好,那么如果换一个例子呢?
05:05
比如说昨天我们写的第一个例子。啊,这个。这是昨天我们写的第一个例子啊,然后呢,我在这个地方执行一下查询,大家看一看。好,大家看是不是报错了呀。你看看是报错了,他报了什么错呀。他说这个数据库当中没有这个表。这个数据库当中没有这个表,而且呢,它实际上想要生成的SQL语句呢,大家其实也能够猜到,就是select,然后列名from user,那么这个SQL语句并不是我们自己定义的,因为我们直接调用的是通用map,对不对?我们来看一下啊,在这个地方我们是不是user method select list呀,而这个user method select list是在哪定义的,是不是在。
06:05
这个base的接口中定义的,而这个base map是一个通用map,我们并没有去给它自定义相对应的SQL语句,所以呢,这个SQL语句是怎么产生的呢?是通过反射机制在运行的时候动态产生的,那么既然是通过反射机制,注意是反射啊,在运行的时候动态产生,那么它的列名和数据库当中的表明一定是根据我们实体的。属性名和实体的类名自动生成的,那我们这边实体的类名叫做user,所以它呢,自动生成的数据库的表明就叫做user,那么如何将我们的实体的类名。去映射到。一个形式不一样的数据库的表明呢,这个呢就需要注解来帮忙了,那么注解呢也很好理解,我们呢,就在这个类名的上面呢,写一个叫做pay包name的一个注解就可以了,那么在这个地方呢,我们给它定义一个VALUE6属性,好在value里面呢,我们就定义真正的。
07:16
数据库的表的名字就可以了,那接下来呢,我们再对刚才的这个测试用例呢,进行一个测试。好,大家看。这个时候呢,我们的circle是不是又再次成立了,也就是说当他进行一个反射的时候,它呢不会直接根据我们的实体的类名来进行SQL语句的生成,它呢会参考一下上面的table name,如果没有table name这个定义的话,那么就根据类名生成,如果有了table name这个定义的话,那么就根据value属性的名字去生成我们的数据库的表明。
08:08
好了,这就是我们所说的table name这个注解的一个用处。
我来说两句