最近用mybatis开发,一些总结:
-
结合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>
-
定义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>
-
定义具体的域对象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 > #{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 > #{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>
-
在java中调用:首先需要在bean中引用factory对象:
@Resource private SqlSessionTemplate sqlSessionTemplate;
-
然后使用名称调用
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);
- 需要注意的是,传递的参数在mybatis里可以使用#{变量名},标示带引号的,比如appId=#{appId},和${变量名},不带引号的,比如order by f.${query}.这一点要灵活运用。
相关推荐
总结,MyBatis通过核心配置文件、映射文件和Mapper接口实现了数据库操作的便捷和灵活。其强大的动态SQL功能、丰富的参数映射和结果集映射,以及缓存机制,都为Java开发人员提供了高效、可控的数据库访问手段。在实际...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
这篇“mybatis学习总结”着重探讨了MyBatis如何与Spring和Spring Boot进行集成,这对于构建高效、可维护的企业级应用至关重要。 首先,MyBatis与Spring的集成主要通过Spring的IoC(Inversion of Control)容器来...
### MyBatis总结 #### JDBC回顾与MyBatis简介 **JDBC(Java Database Connectivity)** 是Java中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它由一组用Java语言...
### MyBatis总结 #### 一、MyBatis概述与特点 ##### 1. MyBatis支持SQL查询映射及动态映射标记 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。通过将接口定义与SQL语句分离,MyBatis...
### MyBatis 知识点总结 #### 一、MyBatis 概述 - **起源与发展**:MyBatis 最初是 Apache 的一个开源项目 iBatis,于2010年由 Apache Software Foundation 迁移到了 Google Code,并更名为 MyBatis。2013年11月,...
总结,MyBatis作为一个轻量级的持久层框架,通过灵活的XML或注解配置,将Java对象与数据库操作紧密结合,简化了开发工作,提高了开发效率。同时,其强大的动态SQL功能和良好的扩展性,使其在Java Web开发中广泛应用...
MyBatis和SpringMVC是两个非常流行的Java开发框架,它们在企业级应用开发中有着广泛的应用。MyBatis是一个轻量级的持久层框架,它解决了Java与数据库交互时的繁琐工作,而SpringMVC则是一个强大的MVC(Model-View-...
【标题】:“mybatis学习总结:基础示例” 在IT领域,MyBatis是一个非常流行的持久层框架,它简化了Java开发中数据库操作的复杂性。这篇“mybatis学习总结:基础示例”旨在帮助初学者理解MyBatis的核心概念,并通过...
Mybatis详细总结
MyBatis是一个强大的Java持久层框架,专注于SQL查询、存储过程和高级映射。它将数据库操作与业务逻辑分离,避免了直接编写大量的JDBC代码,简化了开发工作。MyBatis通过XML或注解的方式将Java的POJOs(Plain Old ...
mybatis学习知识点小小总结。。。。。。。。。。。。。。。。。。。。。。。
MyBatis是一个强大的Java持久层框架,它简化了与数据库之间的交互,使开发者能够更专注于SQL的编写,而无需处理繁琐的JDBC代码。在SSM(Spring、SpringMVC、MyBatis)框架组合中,MyBatis扮演着数据访问层的角色,与...
在使用MyBatis进行数据库操作时,经常会遇到一些问题,这些问题往往与配置、依赖或数据库连接有关。本文将针对标题和描述中提到的常见问题进行详细解答。 首先,针对"Mybatis问题总结",我们关注的是MyBatis框架在...
在IT行业中,MyBatis作为一个轻量级的持久层框架,深受广大开发者的喜爱。它提供了灵活的SQL映射机制,使得Java对象和数据库表之间的映射变得简单易行。本篇文章将聚焦于MyBatis中的注解(Annotation)与XML配置的...
在Mybatis中,每一个、、、标签,都会被解析为一个MappedStatement对象。 Dao接口里的方法,是不能重载的,因为Mybatis是全限名+方法名的保存和寻找策略。 Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用...
该文件时我对MyBatis的一些简单的总结,希望能对大家有用,有不合理的地方希望大家多多指正,感谢大家的支持
MyBatis是一个强大的Java持久层框架,它主要处理SQL查询、存储过程以及复杂的对象映射。这个框架的主要优点是它可以避免大量的JDBC代码手动编写,同时也简化了结果集的处理。下面我们将深入探讨MyBatis的基本概念和...
本篇“mybatis学习总结:annotation示例改进”主要关注的是如何利用MyBatis的注解来优化数据库操作。在现代开发环境中,注解已经成为了简化配置、提高代码可读性的重要工具。以下是关于MyBatis注解使用的一些关键...