`
carlosfu
  • 浏览: 582348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ba8b5055-9c58-3ab0-8a1c-e710f0495d2c
BigMemory实战与理...
浏览量:31223
53b2087e-c637-34d2-b61d-257846f73ade
RedisCluster开...
浏览量:151035
C9f66038-7478-3388-8086-d20c1f535495
缓存的使用与设计
浏览量:125223
社区版块
存档分类
最新评论

MyBatis系列目录--6. Mybatis实用技巧

阅读更多

转载请注明出处哈:http://carlosfu.iteye.com/blog/2238662


 一、通过数据字典查询列,属性数据(减轻手工、防止错误、结合sql标签使用)

select group_concat(column_name) from information_schema.columns where table_schema = 'football' and table_name = 'club';
 
# table_schema是数据库名
# club是数据表名
 
结果:
id,name,info,create_date,rank

二、 下划线命名到驼峰命名

<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

 

三、sql映射中的 # , $ 区分

1. #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。

2. 如果接收简单类型,#{}中可以写成value或其它名称。
#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

3. ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。
${}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,${}中只能写成value。
${}属性接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性....的方式获取对象属性值。

 

四、批量操作:

 

以批量insert为例子:

(1) dao添加新方法:

/**
 * 批量添加俱乐部
 * @param clubList
 */
public void batchSave(@Param("clubList") List<Club> clubList);

 

(2) xml

<insert id="batchSave" parameterType="List" useGeneratedKeys="true">
    insert into club(name,info,create_date,rank)
    values
    <foreach collection="clubList" item="club" index="index" separator=",">
        (#{club.name},#{club.info},#{club.createDate},#{club.rank})
    </foreach>
</insert>

 

(3) 测试:

@Test
public void testBatchSave() {
    ClubDao clubDao = sqlSession.getMapper(ClubDao.class);
    Club club1 = new Club();
    club1.setName("Arsenal");
    club1.setInfo("阿森纳");
    club1.setCreateDate(new Date());
    club1.setRank(15);
    Club club2 = new Club();
    club2.setName("ManUnited");
    club2.setInfo("曼联");
    club2.setCreateDate(new Date());
    club2.setRank(18);
     
    List<Club> clubList = new ArrayList<Club>();
    clubList.add(club1);
    clubList.add(club2);
     
    clubDao.batchSave(clubList);
}

 

五、mybatis中的小于号要进行转义,例如:

    < 用 &lt;代替

select id,name from table where vid=#{vid} and prod=#{prod} and collect_time >=#{startTime} and collect_time&lt;=#{endTime}

 

 六、批量更新:

<update id="batchUpdate">
    	<foreach collection="list" item="item" open="" close="" separator=";">
    	    update jf_cdn_vid_hour set normal_count=#{item.normalCount},cheat_count=#{item.cheatCount}                
    	    where vid = #{item.vid} and prod= #{item.prod} and collect_time=#{item.collectTime}         
    	</foreach>
    </update>

   但是jdbc连接要添加allowMultiQueries=true

   

        <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/xxdb?allowMultiQueries=true"/>

 

七、返回Map

 

例如希望select id,name from table返回Map<Long,String>()

但是事实上,在写mapper.xml时候,返回的是一个List<Map<String,Long>>,然后需要人工解析为你要的Map

<select id="getXXX" resultType="hashmap">
        select id,name from table
 </select>

 Dao:

List<Map<String, Object>> getXXX();

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    mybatis-puls-bate版本.rar

    MyBatis-Plus是一个强大的MyBatis扩展工具,它在MyBatis的...通过深入研究这个bate版本的MyBatis-Plus,开发者可以更好地掌握MyBatis-Plus的核心功能和使用技巧,同时也能了解到代码规范的重要性,提升自身的编程素养。

    MybatisCodeHelperNew-2.7.8-191-193-IDEA2019.3可用.zip

    MybatisCodeHelper是一款高效实用的IntelliJ IDEA插件,专为简化Mybatis开发过程中的代码编写工作而设计。这款插件的主要功能是自动生成Mybatis的Mapper接口、XML映射文件、实体类以及Service层代码,极大地提升了...

    mybatis-mysql-redis面试题大全.md

    同时,还可以提供一些MySQL实用技巧,以帮助面试者在工作中更好地使用MySQL数据库,提高工作效率。 该MySQL面试题资源也可以为MySQL数据库管理和开发领域的学习者提供宝贵的参考资料。这些资料可以帮助他们更好地...

    mybatis-plus-samples

    MyBatis-Plus 是 MyBatis 的一个扩展,它为开发者提供了强大的 CRUD 操作以及更多实用功能,极大地简化了开发工作。本篇文章将深入探讨 `mybatis-plus-samples` 项目,通过源码分析,帮助读者理解其核心概念并掌握...

    springboot-mybatis.rar

    本篇将深入探讨如何在SpringBoot项目中整合MyBatis,以及这种整合带来的优势和使用技巧。 一、SpringBoot简介 SpringBoot是Spring框架的扩展,它提倡“约定优于配置”的原则,通过自动配置和起步依赖,使得开发者...

    javaweb项目社团管理系统springboot+vue+mybatis-plus-java课程设计毕业设计前后端分离

    通过该项目,您将深入学习Spring Boot的后端开发技巧,掌握Vue.js的前端构建能力,并体验MyBatis-Plus在数据持久化中的高效应用。此源码不仅适合Java初学者,还能为有经验的开发者提供实用的技术借鉴。 下载此源码,...

    mybatis-log.zip

    总结一下,Mybatis Log插件是IntelliJ IDEA中的一个实用工具,它增强了Mybatis的日志功能,提供了更丰富的SQL执行信息,有利于提升开发效率和问题排查。通过正确安装和配置,我们可以充分利用这款插件来优化我们的...

    pragmatic-java-engineer,Java Java.zip

    开源项目"pragmatic-java-engineer"是Java开发者的一个宝贵资源,它提供了丰富的实践案例和实用技巧,帮助开发者提升技能,成为一名更务实的Java工程师。本文将深入探讨这个项目的要点,旨在为Java开发者提供一个...

    Spring整合MyBatis-Plus完整案例项目代码

    3. **MyBatis-Plus**:MyBatis-Plus在MyBatis的基础上增加了许多实用功能,如: - 自动填充:实体类中的时间字段可以在插入或更新时自动赋值。 - CRUD操作:提供了一套通用的Mapper接口和Mapper XML文件,简化了...

    mybatis-generate

    标签 "源码" 和 "工具" 暗示了 MyBatis Generator 是一个开放源代码的实用工具,开发者可以查看其源代码,理解其工作原理,并根据需要进行定制或扩展。同时,它也是一个辅助开发的工具,简化了与数据库交互的代码...

    尚硅谷Mybatis视频教程81-88

    总的来说,这套《尚硅谷Mybatis视频教程81-88》全面覆盖了Mybatis的高级特性,不仅有助于提升开发者对Mybatis的理解,还能为实际项目开发提供实用技巧。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。通过...

    mybatis插件-eclispe插件-xml插件【正式版下载】

    总之,**MyBatis Eclipse 插件**是一款非常实用且强大的工具,对于使用MyBatis框架进行开发的人员来说,它不仅能够提高开发效率,还能提升代码质量。通过合理使用该插件,开发者可以将更多精力投入到业务逻辑的设计...

    mybatis反向工程.根据数据库表生成wrapper xml文件和类

    总之,MyBatis反向工程是一个非常实用的功能,它帮助开发者快速地将数据库表结构转化为可直接使用的Java代码。配合注解和主键生成策略,可以高效地构建数据访问层。在Spring Boot环境中,注解驱动的MyBatis提供了一...

    尚硅谷Mybatis视频教程41-50

    《尚硅谷Mybatis视频教程41-50》是一系列深入讲解Mybatis动态SQL的教程,涵盖了Mybatis在实际开发中的重要应用场景和技术要点。Mybatis作为一款强大的持久层框架,其动态SQL功能使得开发者能够更加灵活地处理数据库...

    有用的东西 mybatis

    6. `commons-lang3-3.1.jar` - Apache Commons Lang提供了一些Java语言实用工具,如字符串处理、日期时间操作等,可以辅助MyBatis的日常开发。 7. `cglib-2.2.jar` - CGLIB是一个代码生成库,MyBatis在无法使用注解...

    mybatisPlugin2.92

    MyBatis Plugin是一款针对MyBatis框架的增强工具,它为开发者提供了强大的SQL日志、自动导入、自动完成等实用功能。2.92版本可能是该插件的一个稳定且受到用户喜爱的版本,因为开发者特意保留了这个版本,以防升级到...

    狂神说Mybatis.zip

    9. **Mybatis的高级特性**:包括延迟加载(Lazy Loading)、CGLIB代理、自定义TypeHandler等,这些特性增强了Mybatis的灵活性和实用性。 10. **Mybatis实战**:通过实际项目中的案例,学习如何集成Mybatis到Spring ...

    myself mybatis

    4. **commons-collections-3.2.1.jar** - Apache Commons Collections提供了一系列实用的集合操作,如转换、过滤、排序等,可能会在MyBatis的映射文件中作为方法引用。 5. **cglib-nodep-2.2.2.jar** - CGLIB是一个...

    idea 15 mybatis插件

    6. **使用技巧**:使用MyBatis插件可以提升开发效率,例如,通过插件可以快速生成Mapper接口和XML配置文件,同时在编写SQL时能获得代码提示,减少出错概率。 7. **版本兼容性**:IDEA 15.02版本的插件可能不适用于更...

Global site tag (gtag.js) - Google Analytics