首页 > 其他分享 >数据输出

数据输出

时间:2023-11-14 11:33:00浏览次数:16  
标签:输出 实体类 数据类型 别名 emp 数据 id 属性


4.1单个实体类型输出

(1)mybatis为java中的数据类型提供了别名,一般都是将数据类型的别名转换为小写,字母小写的数据类型前加划线.

例如:Douboe -->double int-->_int

(2)如果返回值为类类型,推荐使用下面一种:

<typeAliases> 
    <package name="com.atguigu.pojo"/> 
</typeAliases>

此方式会将上述包下的所有实体类起别名,别名为实体类的小写形式.

4.2返回map数据类型

map数据类型,适用于SQL查询返回的各个字段综合起来并不和任何一个现有的实体类对应,没法封装到实体类对象中。能够封装成实体类类型的,就不使用Map类型。

4.3返回List集合类型

查询结果返回多个实体类对象,希望把多个实体类对象放在List集合中返回。此时不需要任何特殊处理,在resultType属性中还是设置实体类类型即可。

4.4返回主键值

int insertEmployee(Employee employee);
<!-- useGeneratedKeys属性字面意思就是“使用生成的主键” -->
<!-- keyProperty属性可以指定主键在实体类对象中对应的属性名,Mybatis会将拿到的主键值存入这个属性 -->
<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="empId">
  insert into t_emp(emp_name,emp_salary)
  values(#{empName},#{empSalary})
</insert>

Mybatis是将自增主键的值设置到实体类对象中,而不是以Mapper接口方法返回值的形式返回。

4.5非自增长类型主键

<insert id="insertUser" parameterType="User">
    <selectKey order="BEFORE" resultType="java.lang.String" keyProperty="UserId">
        SELECT UUID() as UserId 
    </selectKey>
    INSERT INTO user (UserId, userName, password) 
    VALUES (
        #{id},
        #{username},
        #{password}
    )
</insert>

我们定义了一个 insertUser 的插入语句来将 User 对象插入到 user 表中。我们使用 selectKey 来查询 UUID 并设置到 id 字段中。

通过 keyProperty 属性来指定查询到的 UUID 赋值给对象中的 id 属性,而 resultType 属性指定了 UUID 的类型为 java.lang.String

需要注意的是,我们将 selectKey 放在了插入语句的前面,这是因为 MySQL 在 insert 语句中只支持一个 select 子句,而 selectKey 中查询 UUID 的语句就是一个 select 子句,因此我们需要将其放在前面。

最后,在将 User 对象插入到 user 表中时,我们直接使用对象中的 id 属性来插入主键值。

4.6实体类属性和数据库字段对应关系

  1. 别名对应
    将字段的别名设置成和实体类属性一致。
<!-- 编写具体的SQL语句,使用id属性唯一的标记一条SQL语句 -->
<!-- resultType属性:指定封装查询结果的Java实体类的全类名 -->
<select id="selectEmployee" resultType="com.atguigu.mybatis.entity.Employee">

  <!-- Mybatis负责把SQL语句中的#{}部分替换成“?”占位符 -->
  <!-- 给每一个字段设置一个别名,让别名和Java实体类中属性名一致 -->
  select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_id=#{maomi}

</select>
> 关于实体类属性的约定:

getXxx()方法、setXxx()方法把方法名中的get或set去掉,首字母小写。

  1. 全局配置自动识别驼峰式命名规则
    在Mybatis全局配置文件加入如下配置:
<!-- 使用settings对Mybatis全局进行设置 -->
<settings>

  <!-- 将xxx_xxx这样的列名自动映射到xxXxx这样驼峰式命名的属性名 -->
  <setting name="mapUnderscoreToCamelCase" value="true"/>

</settings>
SQL语句中可以不使用别名
<!-- Employee selectEmployee(Integer empId); -->
<select id="selectEmployee" resultType="com.atguigu.mybatis.entity.Employee">

  select emp_id,emp_name,emp_salary from t_emp where emp_id=#{empId}

</select>
  1. 使用resultMap
    使用resultMap标签定义对应关系,再在后面的SQL语句中引用这个对应关系
<!-- 专门声明一个resultMap设定column到property之间的对应关系 -->
<resultMap id="selectEmployeeByRMResultMap" type="com.atguigu.mybatis.entity.Employee">

  <!-- 使用id标签设置主键列和主键属性之间的对应关系 -->
  <!-- column属性用于指定字段名;property属性用于指定Java实体类属性名 -->
  <id column="emp_id" property="empId"/>

  <!-- 使用result标签设置普通字段和Java实体类属性之间的关系 -->
  <result column="emp_name" property="empName"/>

  <result column="emp_salary" property="empSalary"/>

</resultMap>

<!-- Employee selectEmployeeByRM(Integer empId); -->
<select id="selectEmployeeByRM" resultMap="selectEmployeeByRMResultMap">

  select emp_id,emp_name,emp_salary from t_emp where emp_id=#{empId}

</select>

标签:输出,实体类,数据类型,别名,emp,数据,id,属性
From: https://blog.51cto.com/u_16072958/8364504

相关文章

  • SQL Server 分组排序后取第N条数据(或前N条)
    节选自https://blog.csdn.net/cxu123321/article/details/92059001分组取前N条数据SQLSELECT*FROM(SELECTROW_NUMBER()OVER(PARTITIONBYt1.XORDERBYt1.Y)ASRNUM,*FROMTable1t1)ASTWHERET.RNUM=NX:分组的字段;Y:排序的字段;N:第N条......
  • 后端与数据库
    目录一、导出数据表二、传输至本地三、后端建表结构四、迁移五、导入数据六、后端查询字段及数据一、导出数据表远程服务器的SQLServer数据库导出数据表步骤:在表所在的数据库上右击-->任务-->导出数据我导出的是excel表格的文件格式二、传输至本地将导出的数据表......
  • mysql数据表 Table is marked as crashed and should be repaired 的解决办法
    问题查询时,报  Tableismarkedascrashedandshouldberepaired 错误错误原因网上查了一下,错误的产生原因,有网友说是频繁查询和更新XXX表造成的索引错误,还有说法是Mysql数据库因某种原因而受到了损坏。如:数据库服务器突发性断电,在数据表提供服务时对表的源文件进行某......
  • 对几种语言的数据结构的总结
    一:Java中的数据结构Java中有以下几种数据结构:线性结构:数组、链表、哈希表、队列、栈。非线性结构:堆、树(二叉树、B树、B+树、红黑树)、图。二:C语言中的数据结构C语言中常用的数据结构包括:线性结构:数组、链表、栈、队列、线性表。树形结构:二叉树、堆、哈夫曼树、红黑树。图形结构:图......
  • mysql-partition库-创建数据库表分区、展示表分区最新字段
    说明[tips]提供mysql数据库的分区表最新分区查询,支持分区字段为DATE或TO_DAYS(date_str)类型的数据表新建分区,依赖库包括:"pandas","pymysql","sqlalchemy".[ProvidethelatestpartitionqueryforthepartitiontableofMySQLdatabase,supportingpartitionfields......
  • Django中ORM如何执行原生sql语句操作数据库
    django中的ORM提供的操作功能有限,在模型提供的查询API不能满足实际工作需要时,可以在ORM中直接执行原生sql语句。Django提供两种方法使用原生SQL进行查询:一种是使用raw()方法,进行原生SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的SQL语句。另外就是用extra方法。......
  • CRM系统:助力数据服务企业,打造核心竞争力
    近年来,数据服务企业开始走入大众视野。作为企业管理应用热门选手——CRM客户管理系统,可以助力企业实时数据应用先行者,提升业务转化与协同效率,进一步打造核心竞争力。下面我们说说,CRM系统对数据服务企业的作用。我们正处于从IT向DT转变的时代某数据统计机构发现,2020年全球数字化......
  • 微信小程序--自定义tabbar切换页面时,保留数据方案
    自定义的tabbar组件,每次切换页面时都会重新加载页面和数据,需要通过一些方法把tabbar菜单的数据保留下来,不要每次都请求数据。方案一:在app.js文件里定义全局数据(本次项目采用的是可以在后台管理里配置的数据,所以采用了方案一)1、在app.js文件里定义一个全局变量App({  globa......
  • python连接数据库导入excel查询结果
    下面是主要代码部分 #安装包pymysql,excel导入模块importpymysql#安装sql连接库模块importpandasaspd#安装excel导入模块#连接数据库conn=pymysql.connect(  host='cs-cn',#连接地址  port=4037,            #连接端口  ......
  • 幸福城市平台:数据库选型与优化实践
    作者:Fly-bird随着外面平台和外卖行业的兴起,越来越多的企业开始涉足本地化的外卖、配送、跑腿等业务,目前市场基本是美团和饿了么的天下,但是在一些三线城市领域,存在着最本土化的本地电商平台-幸福城市,幸福城市不是一个平台,是N多个三线城市各自的品牌,只是使用了同一套技术平台。幸福......