永发信息网

一对一高级映射 插入 的 sql语句怎样写

答案:1  悬赏:0  手机版
解决时间 2021-03-06 21:58
一对一高级映射 插入 的 sql语句怎样写
最佳答案
查询语句是 MyBatis 中最常用的元素之一,本文涉及mybatis的单表查询操作,关联表有关的查询会后续补充。

巧妇难为无米之炊,要想从数据库中表中取出数据并转化为javaBean,所以,我们要先准备javabean以及与其对应的数据表。

javaBean:

public class President {

private int id;
private String name;

@Override
public String toString() {
return "President [id=" + id + ", name=" + name + "]";
}
//get set 方法.....
}
创建两个对应的数据库表,并插入两条数据:

create table president1(
p_id int not null auto_increment primary key,
p_name varchar(50) not null
);

insert into president1(p_name) values('lily'),('Tom');

create table president2(
id int not null auto_increment primary key,
name varchar(50) not null
);
insert into president2(name) values('lily'),('Tom');
创建两个数据库是为了测试两个不同的查询状况,
数据库字段名与实体类属性名相同

从sql表可以看出president2的字段名与javabean:President的属性名完全相同,这种情况下mybatis的select操作非常简单:



President p1 = session.selectOne(statement+"getPreByIdPresident1", 1);
System.out.println("表president1中查询"+p1);


此时如果用getPreByIdPresident1进行查询,返回的结果会是null,我们将上面的sql语句在mysql中执行下:

有结果返回,但是返回的字段名为(p_id,p_name)这种结果mybatis在解析时无法与President类对应。多数情况下实体类属性名与数据库表的字段名都会有差异,这种情况如果mybatis不能处理也就太low了。

数据库字段名与实体类属性名不相同
mybatis针对该种情况有两种解决方法,但是归根到底都是同一种实现。

Method1:定义一个ResultMap将数据库字段名与实体类属性名做个映射

我们欲从表president1中查询数据,此时的mapper配置如下:








select * from president1 where p_id=#{id}


首先定义了一个resultMap,将数据库表的字段名与实体类属性名做了一一对应,其中type为实体类(此处运用的类别名),id为了在select标签中引用映射结果。

在select标签中并没有用resultType属性,而使用了resultMap,即为上面定义的resultMap,mybatis会根据resultMap中的映射关系去构造President

Method1:直接在sql语句中使用别名




这种方法会查到实际的数据,这种方法与字段名和属性名相同都是基于相同的原理:MyBatis 会在幕后自动创建一个 ResultMap,基于属性名来映射列到JavaBean 的属性上。即mybatis底层都是通过创建ResultMap来进行关系的映射,与method1原理相同。。追问谢谢 不过我想问的是添加的sql语句 一对一映射
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
高铁上用的窗纱网是啥品牌的,用在隐形纱窗上
买个胆机+无源音箱.可以用在电脑上听吗
记住别人的名字很重要吗?
人的力量可以练大吗?就像李小龙那样。打出的
银川有哪些公办技术学院
钱场镇地址有知道的么?有点事想过去
在母材中C、P、S等元素含量偏高时,易产生焊
三菱发动机改丰田3RZ
由体细胞发育而来的是单倍体吗?是不是由受精
公司名称预约 在哪个网站
p9升级后,不停的显示有些软件打不开,怎么办
过路人英语怎么说
西晨广告在什么地方啊,我要过去处理事情
6a+3b+2c=31,5a+4b+3c-6=31,求a,b,c 不定方程
(已经没事了)
推荐资讯
是不是高智商的人收入都比较低
学韩语什么软件最好?
NIKKELVERK是什么意思
一个伞兵在跳伞时,人和设备的总重是200N,它
四野有几个将军替粟裕58年说公道话
天红宾馆在什么地方啊,我要过去处理事情
女作家三毛和她的丈夫是怎么死的?
普通增值税发票要做应交税费分录吗
为什么小米5qq来信息时通讯指示灯是绿色改不
癌症也是上帝给的礼物吗
果味多在哪里啊,我有事要去这个地方
iOS的移植与破解
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?