当数据库之中的名字与代码中的名字不同的时候使用注解注意:column是数据库中的名字,property是自己定义的类中的名字id=true确认了主键
这是最基础的
大图:
这样不免有一点麻烦,因为这样要每一次使用都要再次写一遍所以
给他定义加上上id,然后哪个想要用直接用@ResultMap(value={“userMaphsk”})引用该id即可
下面是mappers中的标签使用方法
创建一个新的Account实体类(其中加上User账户的信息)和AccountDao接口(出了一个错误:解决的方法是将上一次代码mappers里面的代码改成了,否则出现找不到资源文件的错误)
全限定类名和非限定类名:
限定类名,就是类名全称,带包路径的用点隔开,例如: java.lang.String。
非限定(non-qualified)类名也叫短名,就是我们平时说的类名,不带包的,例如:String。
非限定类名是相对于限定类名来说的,在Java中有很多类,不同的类之间会存在相同的函数或者方法,所以有时候就需要限定类名来调包。 而如果不存在相同的函数或者方法 ,就可以使用非限定(non-qualified)类名。
特别注意:这里需要注意的是在实体类中一定要定义成Integer类型,不然下面一个代码就会发生user并没有封装进去的情况。
eager立即加载(对一,通常)lazy延迟加载(对多,通常)fetchType那里可以配置是立即加载还是延迟加载 以上都是一对一的方法下面是一对多 在user类中加上List accountList;和他的get,set方法因为引用的是数据库名字和定义的实体类中的名字不同代码写的,所以在这里大家请注意不要用错名字在要查询的语句下面添加多对多代码,此处使用延迟加载@Result(property = “accounts”,column = “userid”,many = @Many(select = “dao.Iuserdao.findAccountByuserid”,
fetchType = FetchType.LAZY)) 之后写用来封装user中对多的方法用来对多封装//多对多注解实现,此处封装user类中的List数据
@Select(“select * from Account where cuserid = #{xx}”)
List findAccountByuserid(int userid);
今天的学习就到这里了,如果大家有不同的看法或者知识可以在下面留言哦!