`
garyli
  • 浏览: 175806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mybatis 一些总结

阅读更多

最近用mybatis开发,一些总结:

  1. 结合spring框架,需要在spring配置文件中加入sessionFactory定义:

            

    <!-- 创建SqlSessionFactory,同时指定数据源 -->
    <bean id="sqlSessionFactory" 
                     class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
    <property name="dataSource" ref="dataSource" />
    </bean>

     

     

  2. 定义mybatis-config.xml文件

     

    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">  
    <configuration>  
        <typeAliases>  
            <typeAlias alias="App" type="com.cyou.appserver.entity.App"/>  
            <typeAlias alias="Feedback" type="com.cyou.appserver.entity.Feedback"/>    
            <typeAlias alias="RecommendApp" type="com.cyou.appserver.entity.RecommendApp"/>
            <typeAlias alias="UpdateInfo" type="com.cyou.appserver.entity.UpdateInfo"/>
            <typeAlias alias="DeviceToken" type="com.cyou.appserver.entity.DeviceToken"/>
            <typeAlias alias="Cards" type="com.cyou.appserver.entity.Cards"/>
            <typeAlias alias="UnableVideoLog" type="com.cyou.appserver.entity.UnableVideoLog"/>
            <typeAlias alias="Battle" type="com.cyou.appserver.entity.Battle"/>
            <typeAlias alias="Card" type="com.cyou.appserver.entity.Card"/>
            <typeAlias alias="Occupational" type="com.cyou.appserver.entity.Occupational"/>
            <typeAlias alias="Licensing" type="com.cyou.appserver.entity.Licensing"/>
            <typeAlias alias="Pictures" type="com.cyou.appserver.entity.Pictures"/>
            <typeAlias alias="Timetable" type="com.cyou.appserver.entity.Timetable"/>
            <typeAlias alias="IndexImage" type="com.cyou.appserver.entity.IndexImage"/>
            <typeAlias alias="CardStat" type="com.cyou.appserver.entity.CardStat"/>
    		<typeAlias alias="AppPush" type="com.cyou.appserver.entity.AppPush" />
    		<typeAlias alias="Formation" type="com.cyou.appserver.entity.Formation" />
    		<typeAlias alias="FormationParise" type="com.cyou.appserver.entity.FormationParise" />
    <!--        <typeAlias alias="AppConfig" type="com.cyou.appserver.entity.AppConfig"/>
            <typeAlias alias="AppMenus" type="com.cyou.appserver.entity.AppMenus"/>
            <typeAlias alias="AppClick" type="com.cyou.appserver.entity.AppClick"/>-->
        </typeAliases>
    
    	<mappers>
    		<mapper resource="mybatis/Ad.xml" />
    		<mapper resource="mybatis/App.xml" />
    		<mapper resource="mybatis/Feedback.xml" />
    		<mapper resource="mybatis/RecommendApp.xml" />
    		<mapper resource="mybatis/UpdateInfo.xml" />
    		<mapper resource="mybatis/DeviceToken.xml" />
    		<mapper resource="mybatis/Cards.xml" />
    		<mapper resource="mybatis/UnableVideoLog.xml" />
    		<mapper resource="mybatis/Battle.xml" />
    		<mapper resource="mybatis/Card.xml" />
    		<mapper resource="mybatis/Occupational.xml" />
    		<mapper resource="mybatis/Licensing.xml" />
    		<mapper resource="mybatis/Pictures.xml" />
    		<mapper resource="mybatis/Timetable.xml" />
    		<mapper resource="mybatis/IndexImage.xml" />
    		<mapper resource="mybatis/CardStat.xml" />
    		<mapper resource="mybatis/AppPush.xml" />
    		<!-- <mapper resource="mybatis/AppConfig.xml" />
    		<mapper resource="mybatis/AppMenus.xml" />
    		<mapper resource="mybatis/AppClick.xml" /> -->
    		<mapper resource="mybatis/Formation.xml" />
    		<mapper resource="mybatis/FormationParise.xml" />
    	</mappers>
    </configuration>

     

     

  3. 定义具体的域对象xml文件,比如Formation.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="Formation">
    
        <select id="list" resultType="Formation" parameterType="map">
        	SELECT f.*,count(p.formationId) as praiseCount 
        	FROM 
        		formation f LEFT JOIN formation_parise p ON f.id = p.formationId 
        	WHERE 
        		f.appId=#{appId} 
        		<if test="level != null">  
    		        and f.level = #{level}  
    		    </if>
    		    <if test="query2 != null">
    		    	and f.createTime &gt; #{query2}
    		    </if>
        	GROUP BY 
        		f.id 
        	<if test="query1 != null">
        	ORDER BY 
        		f.${query1} 
        	</if> 
        	LIMIT #{offset},#{limit}
        </select>
        
        <select id="countByParams" resultType="int" parameterType="map">
        	SELECT count(f.id)
        	FROM 
        		formation f 
        	WHERE 
        		f.appId=#{appId} 
        		<if test="level != null">  
    		        and f.level = #{level}  
    		    </if>
    		    <if test="query2 != null">
    		    	and f.createTime &gt; #{query2}
    		    </if>
        </select>
        
        <select id="totalCount" resultType="int" parameterType="int">
        	select count(*) from formation where appId=#{id} 
        </select>
        
        <insert id="insert" parameterType="Formation" keyProperty="id" useGeneratedKeys="true">
        	<!-- <selectKey keyProperty="id" resultType="int">select nextval('formation')</selectKey> -->
        	insert into formation(appId, name, remark, imageUrl,createTime,contentUrl,commentCount,imei,level,deviceType) 
        	values (#{appId}, #{name}, #{remark}, #{imageUrl},#{createTime},#{contentUrl},#{commentCount},#{imei},#{level},#{deviceType})
        </insert>
        
        <update id="update" parameterType="Formation">
        	update formation set 
    <!--    	appId=#{appId}, name=#{name}, remark=#{remark}, image=#{image}, -->
        	topicId=#{topicId} where id=#{id}
        </update>
        
        <delete id="delete" parameterType="int">
        	delete from formation where id=#{id}
        </delete>
        
        <select id="findById" resultType="Formation" parameterType="int">
        	select f.*,count(p.id) as praiseCount from formation f,formation_parise p where p.id=#{id} and f.id = p.formationId
        </select>
        
        <update id="updateCommentCount" parameterType="int">
        	update formation set commentCount = commentCount + 1 where id=#{id}
        </update>
        
    	<update id="updatePraiseCount" parameterType="map">
        	update formation set praiseCount = praiseCount+1 where id=#{id}
        </update>
    	
    </mapper>
     
  4. 在java中调用:首先需要在bean中引用factory对象:

    	@Resource
    	private SqlSessionTemplate sqlSessionTemplate;
     
  5. 然后使用名称调用
    Map<String,Object> queryMap = new HashMap<String, Object>();
    queryMap.put("appId", appId);
    queryMap.put("offset", (pageNum-1) * pageSize);
    queryMap.put("limit", pageSize);
    List<Formation> list = (List<Formation>) sqlSessionTemplate.selectList("Formation.list", queryMap);
     
  6. 需要注意的是,传递的参数在mybatis里可以使用#{变量名},标示带引号的,比如appId=#{appId},和${变量名},不带引号的,比如order by f.${query}.这一点要灵活运用。
分享到:
评论

相关推荐

    MyBatis基本使用总结

    总结,MyBatis通过核心配置文件、映射文件和Mapper接口实现了数据库操作的便捷和灵活。其强大的动态SQL功能、丰富的参数映射和结果集映射,以及缓存机制,都为Java开发人员提供了高效、可控的数据库访问手段。在实际...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

    mybatis学习总结:mybatis和spring, spring boot的集成

    这篇“mybatis学习总结”着重探讨了MyBatis如何与Spring和Spring Boot进行集成,这对于构建高效、可维护的企业级应用至关重要。 首先,MyBatis与Spring的集成主要通过Spring的IoC(Inversion of Control)容器来...

    mybatis的总结一

    ### MyBatis总结 #### JDBC回顾与MyBatis简介 **JDBC(Java Database Connectivity)** 是Java中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它由一组用Java语言...

    mybatis总结

    ### MyBatis总结 #### 一、MyBatis概述与特点 ##### 1. MyBatis支持SQL查询映射及动态映射标记 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。通过将接口定义与SQL语句分离,MyBatis...

    mybatis老师总结

    ### MyBatis 知识点总结 #### 一、MyBatis 概述 - **起源与发展**:MyBatis 最初是 Apache 的一个开源项目 iBatis,于2010年由 Apache Software Foundation 迁移到了 Google Code,并更名为 MyBatis。2013年11月,...

    【狂神说】mybatis学习总结后源码下载(全) mybatis-study.zip

    总结,MyBatis作为一个轻量级的持久层框架,通过灵活的XML或注解配置,将Java对象与数据库操作紧密结合,简化了开发工作,提高了开发效率。同时,其强大的动态SQL功能和良好的扩展性,使其在Java Web开发中广泛应用...

    MyBatis SpringMVC 整合总结

    MyBatis和SpringMVC是两个非常流行的Java开发框架,它们在企业级应用开发中有着广泛的应用。MyBatis是一个轻量级的持久层框架,它解决了Java与数据库交互时的繁琐工作,而SpringMVC则是一个强大的MVC(Model-View-...

    mybatis学习总结:基础示例

    【标题】:“mybatis学习总结:基础示例” 在IT领域,MyBatis是一个非常流行的持久层框架,它简化了Java开发中数据库操作的复杂性。这篇“mybatis学习总结:基础示例”旨在帮助初学者理解MyBatis的核心概念,并通过...

    Mybatis详细总结

    Mybatis详细总结

    MYBatis总结.docx

    MyBatis是一个强大的Java持久层框架,专注于SQL查询、存储过程和高级映射。它将数据库操作与业务逻辑分离,避免了直接编写大量的JDBC代码,简化了开发工作。MyBatis通过XML或注解的方式将Java的POJOs(Plain Old ...

    mybatis小小总结文档

    mybatis学习知识点小小总结。。。。。。。。。。。。。。。。。。。。。。。

    mybatis知识总结.zip

    MyBatis是一个强大的Java持久层框架,它简化了与数据库之间的交互,使开发者能够更专注于SQL的编写,而无需处理繁琐的JDBC代码。在SSM(Spring、SpringMVC、MyBatis)框架组合中,MyBatis扮演着数据访问层的角色,与...

    mybatis问题总结.docx

    在使用MyBatis进行数据库操作时,经常会遇到一些问题,这些问题往往与配置、依赖或数据库连接有关。本文将针对标题和描述中提到的常见问题进行详细解答。 首先,针对"Mybatis问题总结",我们关注的是MyBatis框架在...

    mybatis学习总结:annotation与xml结合示例

    在IT行业中,MyBatis作为一个轻量级的持久层框架,深受广大开发者的喜爱。它提供了灵活的SQL映射机制,使得Java对象和数据库表之间的映射变得简单易行。本篇文章将聚焦于MyBatis中的注解(Annotation)与XML配置的...

    MyBatis知识点总结.ppt

    在Mybatis中,每一个、、、标签,都会被解析为一个MappedStatement对象。 Dao接口里的方法,是不能重载的,因为Mybatis是全限名+方法名的保存和寻找策略。 Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用...

    Mybatis总结.xmind

    该文件时我对MyBatis的一些简单的总结,希望能对大家有用,有不合理的地方希望大家多多指正,感谢大家的支持

    MyBatis学习总结——MyBatis快速入门.docx

    MyBatis是一个强大的Java持久层框架,它主要处理SQL查询、存储过程以及复杂的对象映射。这个框架的主要优点是它可以避免大量的JDBC代码手动编写,同时也简化了结果集的处理。下面我们将深入探讨MyBatis的基本概念和...

    mybatis学习总结:annotation示例改进

    本篇“mybatis学习总结:annotation示例改进”主要关注的是如何利用MyBatis的注解来优化数据库操作。在现代开发环境中,注解已经成为了简化配置、提高代码可读性的重要工具。以下是关于MyBatis注解使用的一些关键...

Global site tag (gtag.js) - Google Analytics