mybatis学习笔记(3)—数据库和bean名称不一样处理方案
- 之前写的mybatis对象的bean对象和数据库的对象名称是对应的,然而再实际开发的过程有很多不一一对应的情况。就需要解决。
bean对象:
package com.test.bean;
/** javabean 对象*/
public class order {private int id;private String no;private float price;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getOrderNo() {return no;}public void setOrderNo(String orderNo) {this.no = orderNo;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}@Overridepublic String toString() {return "Order [id=" id ", orderNo=" no ", price=" price "]";}
}
而mysql的对象为
再xml中的配置为:
-<mapper namespace="ordermapper"><!-- 根据id查询得到一个order对象,使用这个查询是查询不到我们想要的结果的,这主要是因为实体类的属性名和数据库的字段名对应不上的原因,因此无法查询出对应的记录 --><select resultType="com.test.bean.order" parameterType="int" id="getorderbyid">select * from orders where order_id=#{id} </select><!-- 第一种方法根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上 --><select resultType="com.test.bean.order" parameterType="int" id="getorderbyid2">select order_id id,order_no no,order_price price from orders where order_id=#{id} </select><select parameterType="int" id="getorderbymap" resultMap="orderResultMap">select * from orders where order_id=#{id} </select>-<resultMap id="orderResultMap" type="com.test.bean.order"><!-- 用id属性来映射主键字段 --><id column="order_id" property="id"/><!-- 用result属性来映射非主键字段 --><result column="order_no" property="no"/><result column="order_price" property="price"/></resultMap><!-- 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 --><select id="getUserCount" statementType="CALLABLE" parameterMap="getUserCountMap">CALL mybits.ges_user_count(?,?) </select><!--parameterMap.put("sexid", 0);parameterMap.put("usercount", -1); -->-<parameterMap id="getUserCountMap" type="java.util.Map"><parameter property="sexid" jdbcType="INTEGER" mode="IN"/><parameter property="usercount" jdbcType="INTEGER" mode="OUT"/></parameterMap></mapper>
test实例(先封装一下)
import java.io.InputStream;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class returnsqlsession {public static SqlSessionFactory getSqlSessionFactory(){String resource="conf.xml";InputStream in=returnsqlsession.class.getClassLoader().getResourceAsStream(resource);SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);return factory;}public static SqlSession getSqlSession(){//返回sqlsessionreturn getSqlSessionFactory().openSession(); }/*** 获取SqlSession* @param isAutoCommit * true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务* false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务* @return SqlSession*/public static SqlSession getSqlSession(boolean isAutoCommit) {return getSqlSessionFactory().openSession(isAutoCommit);}
}
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;import org.apache.ibatis.session.SqlSession;import com.test.bean.order;public class test1 {public static void testselect1() throws IOException{SqlSession sqlsession=returnsqlsession.getsqlsession(true);//String statement="ordermapper.getorderbyid1";//String statement="ordermapper.getorderbyid2";String statement="ordermapper.getorderbymap";order order=sqlsession.selectOne(statement, 2);sqlsession.close();System.out.println(order);}public static void main(String[] args) throws IOException {// TODO Auto-generated method stubtestselect1(); }
}
两种基本的解决方式,如果用到的较少,可以选择第一种,如果用到较多较复杂,可以选择第二种。
mybatis学习笔记(3)—数据库和bean名称不一样处理方案相关推荐
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- mybatis学习笔记(3)-入门程序一
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...
- 超详细Mybatis学习笔记(可供下载)
文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...
- Mybatis学习笔记【part03】增删改查
Mybatis 学习笔记 Part03 1.传入参数与返回参数设置(查) <!-- 根据 id 查询 --> <select id="findById" resu ...
- [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍
[MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...
- MyBatis学习笔记(二)根据配置文件优化
上一篇:MyBatis学习笔记(一)完整查询数据库流程+增删改查 mybatis_config.xml文件中可以包含以下部分 本文接下来的优化都是针对于mybatis_config.xml文件,并且每 ...
- mybatis学习笔记(13)-延迟加载
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...
- mybatis学习笔记--常见的错误
原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...
- mybatis学习笔记(1)-对原生jdbc程序中的问题总结
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(1)-对原生jdbc程序中的问题总结 标签:mybatis [TOC] 本文总结jdbc编程的一般步骤 ...
最新文章
- C# in depth 阅读笔记-- 委托
- excel合并计算_【Excel】合并计算和模拟分析的应用
- getvalue参数计数不匹配_OpenCV开发笔记(六十八):红胖子8分钟带你使用特征点Flann最邻近差值匹配识别...
- 【JEECG技术文档】表单配置-树形表单
- vue cli脚手架详解_vue-cli脚手架搭建vue项目搭建
- 动态创建form传参
- Lync 小技巧-14-为用户启用统一的联系人存储库-Lync-无联系人
- PCB中 D-Subminiature(DB接口) 连接器系列分类及带有3D封装绘制
- c++中struct构造函数
- Python列表基础--仅index()获取元素全部索引
- 蓝叠模拟器的adb程序位置
- [转]多普达818、828+升级中文WM6.1及必装软件全过程讲解
- TF卡里删掉文件后内存没变大_双11,TF卡,SD卡,读卡器如何选,看这篇就够了...
- 决定迭代次数的两种效应
- ffmpeg安装教程(支持10bit编码)
- MonkeyEye电影售票系统--活动图
- linux下打补丁和生成补丁
- 测试新版Android Studio的手机镜像效果
- linux相关函数,linux相关常用函数参考
- OpenBlas API整理
热门文章
- Kubernetes中部署Docker registry2.7.1并通过containerd实现拉取镜像到应用Pod的部署
- 【Python翻屏软件】英文1秒翻,水准堪比专九,这下考级有救了。
- buuctf 二维码
- [专题目录]-CA/TA development导读目录
- 剖析boot.img的制作流程
- 网络适配器有感叹号不能上网_笔记本电脑显示无internet安全,不能无线上网怎么办...
- printf()详解
- 1125 Chain the Ropes (25 分)【难度: 一般 / 贪心 哈夫曼树】
- Shell中常用的系统函数basename和dirname
- uni-app小程序v-show内容始终不显示