文档章节

Mybatis 配置常见情况(入门总结篇)

Osheep
 Osheep
发布于 2015/05/16 12:38
字数 632
阅读 7
收藏 0
在Mybatis中,在查询结果集中,单个对象的封装已经远远不能满足业务的要求,于是,可以使用ResultMap:
    如果在ResultMap中未使用到<association />标签,就是子对象结果映射,你可以不必将一级对象的属性一一映射,也可以完成结果集的自动填充!

    当然,如果在ResultMap中使用到<association />标签,那每个实体字段和表字段必须对应,否则值为空或默认值!
  

<!-- 映射ActivityResultMap -->
        <resultMap type="Activity" id="ActivityresultMap">
                <result property="id" column="id"/>
                <result property="bid" column="bid"/>
                <result property="cid" column="cid"/>
                <result property="activity_name" column="activity_name"/>
                <result property="award_rate" column="award_rate"/>
                <result property="activity_desc" column="activity_desc"/>
                <result property="activity_list_img" column="activity_list_img"/>
                <result property="activity_detail_img" column="activity_detail_img"/>
                <result property="start_time" column="start_time"/>
                <result property="end_time" column="end_time"/>
                <result property="activity_type" column="activity_type"/>
                <result property="activity_state" column="activity_state"/>
                <result property="activity_url" column="activity_url"/>
                <result property="activity_rule" column="activity_rule"/>
                <result property="name" column="name"/>
                <result property="award_time_astrict" column="award_time_astrict"/>
                <result property="award_start_time" column="award_start_time"/>
                <result property="award_end_time" column="award_end_time"/>
                <result property="personal_img" column="personal_img"/>
                <result property="theme_img" column="theme_img"/>
                <result property="count_join" column="count_join"/>
                <result property="serial_num_count" column="serial_num_count"/>
                <result property="usable_count" column="usable_count"/>
                
                <association property="bankInfo" javaType="BankInfo">
                        <result property="bank_name" column="bank_name"/>
                </association>
                
                <association property="card" javaType="CreditCard">
                        <result property="card_name" column="card_name"/>
                </association>
                
                <association property="activitype" javaType="ActivityType">
                        <result property="type_name" column="type_name"/>
                </association>
                
        </resultMap>


在插入数据时,可以使用<selectKey />标签将产生的自增ID返回出来,当然,ID将自动封装到对象的ID字段中,而并非你方法的返回类型 int 中(当时就被这个坑了很久):

   在其中MySQL是这样子的,它的Order属性为After,表示先执行插入语句,然后在获得ID值:

        

<insert id="saveActivity" parameterType="Activity" keyProperty="id" keyColumn="id">
                insert into kk_activity(bid,cid,activity_name,award_rate,activity_desc,activity_list_img,activity_detail_img,start_time,end_time,activity_type,activity_state,activity_url,activity_rule,name,award_time_astrict,award_start_time,award_end_time,personal_img,theme_img,count_join) 
                values(#{bid},#{cid},#{activity_name},#{award_rate},#{activity_desc},#{activity_list_img},#{activity_detail_img},#{start_time},#{end_time},#{activity_type},#{activity_state},#{activity_url},#{activity_rule},#{name},#{award_time_astrict},#{award_start_time},#{award_end_time},#{personal_img},#{theme_img},#{count_join})
                <selectKey keyProperty="id"  resultType="java.lang.Integer" order="AFTER"> 
                        select LAST_INSERT_ID() 
                </selectKey>
        </insert>


  而在 Oracle  中,因为ID自增有sequance (序列)产生,则需这样:order="BEFORE",先获得ID值,然后进行插入:

  在Mappler.java  的抽象方法中,如果有多个参数,你可以使用@Param()注解:

        public List<Activity> getActivityByPage(@Param(value="page")UIPage page, @Param(value="activity")Activity activity);


在Mapper.xml中,你可以使用ONGL表达式,也可以使用EL表达式,是不是很方便呢!

如果你想有程序来组装你想要的SQL,然后由Mybatis执行,你大可这样做:
接口方法:

        public HashMap<String, Object> getOrderCardInfoBySQL(@Param(value="excusql")String excusql);


    在Mapper.xml 文件映射:

        <select id="getOrderCardInfoBySQL" resultType="map">
                ${excusql}
        </select>
        

    是不是很简单呢,如果有不懂,可以去参考Mybatis文档,也可以给我留言哦..


© 著作权归作者所有

Osheep
粉丝 8
博文 35
码字总数 38596
作品 1
深圳
项目经理
私信 提问
【Java学习路线】新手该如何一步步的学习 Java

新手该如何一步步的学习 Java? 如果真的想学Java,最好要循序渐进,有章有法的学习它! 今天小慕就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容。 首先,给大家分享一张以 企业...

Eddie_yang
2018/11/15
131
0
PHP代码审计专题

一、前言 php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞。如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程。 入门php代码审...

i春秋学院
2017/03/25
632
0
金九银十,史上最强 Java 面试题整理。

以下会重新整理所有 Java 系列面试题答案、及各大互联网公司的面试经验,会从以下几个方面汇总,本文会长期更新。 Java 面试篇 史上最全 Java 面试题,带全部答案 史上最全 69 道 Spring 面试...

Java技术栈
2018/09/13
0
0
【粉丝福利】PHP代码审计-程序员突破职业瓶颈新选择,Get✔

一、前言 php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞。如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程。 入门php代码审...

i春秋学院
2017/03/27
511
1
springmvc+mybatis学习笔记(汇总)

springmvc+mybatis学习笔记(汇总) 标签 : springmvc mybaits [TOC] 笔记分为两大部分:mybatis和springmvc mybatis springmvc 笔记内容主要是mybatis和springmvc的一些基本概念和使用方法,...

brianway
2016/03/30
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Java的战争

本文来自微信公众号: 金捷幡(ID:jin-jiefan) ,作者:金捷幡,封面:拉里·埃里森(东方IC) 2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的Android授权。开源软...

Java领航员
今天
6
0
超详细的LM3414MRX/NOPB规格参数介绍就在这里

超详细的LM3414MRX/NOPB规格参数介绍就在这里 描述 LM3414和LM3414MRX/NOPB是具有1-A 60 W(1)共阳极功能的恒流降压LED驱动器。它们适用于驱动单串3-W HBLED,效率高达96%。它们可接受4.5...

不能吃肉的仙女
今天
2
0
Eclipse国内镜像源配置方法

Table of Contents 我们在国内从官网下载Eclipse以及插件非常慢,那么,有没有方法变快呢? 有,那就是使用国内的公开镜像源替换官方源。 1 下载Eclipse 首先,我们看一个链接地址: http:/...

求神
今天
7
0
java 请求服务

一.第一种基于java web http 请求服务,必须用tomcat 容器启动才能对外提供服务 在maven 工程中pox 文件导入jar <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h......

zaolonglei
今天
6
0
HDFS工作机制——自开发分布式数据采集系统

需求描述: 在业务系统的服务器上,业务程序会不断生成业务日志(比如网站的页面访问日志) 业务日志是用log4j生成的,会不断地切出日志文件,需要定期(比如每小时)从业务服务器上的日志目...

须臾之余
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部