spring3和mybatis3的初始探索
终于打算踏踏实实开始写我的技术博客了,也算是对前进道路的总结。
前阵子看了看mybatis3,之前的项目一直用ibatis2,不料想,技术发展的如此迅猛,已经到mybatis3了。
谈谈mybatis3与ibatis2的不同处:
1.更加自动化,但同时也降低了灵活度。mybatis将原有dao层全部变成interface,自动与mapping映射文件绑定,不需要再单独在配置文件中一一指定对应关系,这点可能是目前体会到与ibatis2最大的不同。
2.mapping映射文件中dtd做了很大的更改,原有的很多标签都不能识别,名称全部更新。
3.原有的sqlmap命名方式全部改成了sqlsession,这点倒是和hibernate有点像了。
一个简单的与spring3结合的小程序,前后台已经运行通。
1.pojo层
public class CityObj implements java.io.Serializable { private static final long serialVersionUID = 5454155825314635342L; //alias public static final String TABLE_ALIAS = "City"; public static final String ALIAS_CITYID = "cityid"; public static final String ALIAS_CITYNAME = "cityname"; public static final String ALIAS_PROID = "proid"; //date formats //columns START private java.lang.Integer cityid; private java.lang.String cityname; private java.lang.Integer proid; //columns END public void setCityid(java.lang.Integer value) { this.cityid = value; } public java.lang.Integer getCityid() { return this.cityid; } public void setCityname(java.lang.String value) { this.cityname = value; } public java.lang.String getCityname() { return this.cityname; } public void setProid(java.lang.Integer value) { this.proid = value; } public java.lang.Integer getProid() { return this.proid; } public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("ProvinceObj"); sb.append("{Cityid='").append(cityid).append('\''); sb.append("{Cityname='").append(cityname).append('\''); sb.append("{Proid='").append(proid).append('\''); sb.append('}'); return sb.toString(); } }
2.dao层接口文件
public interface CityMapper { CityObj queryById(CityObj cObj); int insertByObj(CityObj cObj); }
映射文件
<?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="org.mybatis.jpetstore.persistence.CityMapper"> <cache /> <!-- 用于select查询公用抽取的列 --> <sql id="cityColumns"> <![CDATA[ cityid ,cityname ,proid ]]> </sql> <select id="queryById" resultType="CityObj"> SELECT <include refid="cityColumns"/> <![CDATA[ FROM city limit 1 ]]> </select> <insert id="insertByObj" useGeneratedKeys="true" keyProperty="cityid"> <![CDATA[ INSERT INTO city ( cityname , proid ) VALUES ( #{cityname} , #{proid} ) ]]> </insert> </mapper>
3.service层
@Service public class CityService { @Autowired private CityMapper cityMapper; public CityObj queryById(CityObj cObj){ return cityMapper.queryById(cObj); } public int insertByObj(CityObj cObj){ return cityMapper.insertByObj(cObj); } }
4.web层
@Controller @RequestMapping(value = "/city") public class CityController{ @Autowired private CityService cityService; private final String LIST_ACTION = "redirect:/city/list.do"; public CityController() { } /** * 增加setXXXX()方法,spring就可以通过autowire自动设置对象属性,注意大小写 **/ public void setCityService(CityService Service) { this.cityService = Service; } /** * 增加了@ModelAttribute的方法可以在本controller的方法调用前执行,可以存放一些共享变量,如枚举值 */ @ModelAttribute public void init(ModelMap model) { model.put("now", new java.sql.Timestamp(System.currentTimeMillis())); } /** * 查看对象 **/ @RequestMapping(value = "/show.do", method = RequestMethod.GET) public ModelAndView show(HttpServletRequest request,HttpServletResponse response) throws Exception { CityObj cityObj = new CityObj(); cityObj.setCityid(1); CityObj city = cityService.queryById(cityObj); System.out.println("***************"); System.out.println(city); return new ModelAndView("/city/show","city",city); } @RequestMapping(value = "/insert.do", method = RequestMethod.GET) public ModelAndView insert()throws Exception{ CityObj cityObj = new CityObj(); cityObj.setCityname("test"); cityObj.setProid(2); int flag = cityService.insertByObj(cityObj); System.out.println("***************"); System.out.println(flag); return null; } }
5.3个配置文件
application-contxt.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright 2010 The myBatis Team Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/umpdb05?useUnicode=true&characterEncoding=GBK"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <!-- transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- enable component scanning (beware that this does not enable mapper scanning!) --> <context:component-scan base-package="org.mybatis.jpetstore.service" /> <!-- enable autowire --> <context:annotation-config /> <!-- enable transaction demarcation with annotations --> <tx:annotation-driven /> <!-- define the SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="org.mybatis.jpetstore.domain" /> </bean> <!-- scan for mappers and let them be autowired --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.mybatis.jpetstore.persistence" /> </bean> </beans>
sample-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <!--<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"--> <!--"http://www.springframework.org/dtd/spring-beans-2.0.dtd">--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName"> <!-- maps request URLs to Controller names --> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> <!-- this bean with the well known name generates view names for us --> <!-- not strictly required since we just want to accept the defaults--> <bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"> <property name="alwaysUseFullPath" value="true"/> </bean> <!-- Configures the @Controller programming model --> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!--use for resolve the special view eg:htmlReport,excel,pdf --> <bean id="beanResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> <property name="contentType" value="text/html; charset=gbk"/> </bean> <!-- - We specify here that Locale and theme are stored in cookies. - They could be stored in a Session. Default resolvers don't allow changing them on the fly. --> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/> <bean id="themeResolver" class="org.springframework.web.servlet.theme.SessionThemeResolver"> <property name="defaultThemeName" value="theme"/> </bean> <!--扫描注解方式的controller--> <context:component-scan base-package="org.mybatis.jpetstore.web.controller"/> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <!--Encoding Filter Mapping Start--> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>sample</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>sample</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
没有写前台jsp,这只是一个最基本的前后台,流程可以跑通,启动后,在浏览器输入:
http://localhost:8400/mybatis-spring-sample/city/show.do
就可以看到控制台的输出信息:
*************** ProvinceObj{Cityid='1'{Cityname='北京市'{Proid='1'}
说明查询成功,这段信息是放到web层调用输出的。
总的来说,mybatis3的基本使用上与原有的ibatis2差别不大,其他的就要等深入学习后才知道了...
代码我放到附件中了
- mybatis-spring-sample.rar (6.8 MB)
- 下载次数: 25
相关推荐
在本文中,我们将深入探讨如何使用JavaEE技术栈,特别是Spring、Spring MVC和MyBatis框架,来构建一个超市货物管理系统的实现。这个系统涵盖了基本的登录功能以及与MySQL数据库的交互,包括增删改查操作和分页显示。...
在IT行业中,Spring Boot和MyBatis是两个非常流行的开源框架,它们分别专注于简化Spring应用的初始设置和提供灵活的数据访问。本篇文章将深入探讨如何整合Spring Boot与MyBatis,以及如何使用MyBatis Generator自动...
ssb(struts2,spring3,mybatis3)实现的家庭费用记录系统,页面已经做好,思路是根据本人实际情况定制:总支出与总收入不计算信用卡、每月记录消费时需先记录本月原有金额等。 功能包括:本月当天支出于收入、本月总支...
这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...
Struts2、Spring3和MyBatis是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作能够构建出高效、松耦合的Web应用。这个“Struts2+Spring3+MyBatis结合项目”是一个实战示例,旨在帮助开发者深入理解...
这个整合项目是基于Spring 3.0.5、Spring MVC 3和MyBatis 3.0.2版本,采用注解方式进行配置,简化了XML配置文件,提高了开发效率。 Spring MVC是Spring框架的一部分,主要负责Web请求的处理。在本项目中,通过注解...
3. **Mapper 接口和 XML 映射文件**:MyBatis 的核心是 Mapper 接口和对应的 XML 映射文件。在接口中定义数据库操作方法,XML 文件中编写 SQL 语句。Spring Boot 会自动扫描并加载这些资源。 4. **...
接着,配置Struts2、Spring和MyBatis的初始化参数,确保它们能正确加载和初始化。最后,编写Action、Service、DAO以及EasyUI对应的JSP页面,完成业务逻辑和界面展示。 总的来说,"struts2+spring+mybatis+easyui"的...
《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》是一本深入探讨Java企业级应用程序开发的书籍,源代码包含多个章节的实例,旨在帮助读者理解和掌握使用Spring、Spring MVC和MyBatis框架进行实际开发的关键...
在本项目中,"使用Spring, Spring MVC和MyBatis实现传智书城"是一个基于Java的Web应用程序,它利用了三个核心框架:Spring、Spring MVC和MyBatis,来构建一个功能完善的在线书店系统。这个项目是一个Eclipse工程,...
Spring4与Mybatis3的整合,使得开发者可以在享受Spring强大功能的同时,充分利用Mybatis的灵活性和高效性。这种组合在现代企业级应用开发中占据了重要地位,也是许多开发者必备的技术栈。通过深入学习和实践,开发者...
在IT行业中,Spring MVC 和 MyBatis 是两个非常重要的框架,它们分别负责Web应用程序的控制器层和数据访问层。Spring MVC 提供了模型-视图-控制器架构模式的实现,而MyBatis则是一个轻量级的SQL映射框架,用于简化...
Struts2、Spring3 和 MyBatis3 是Java Web开发中的三大主流框架,它们的集成应用可以构建出高效、灵活的后端系统。Struts2 作为MVC(Model-View-Controller)框架,负责处理请求和展示视图;Spring3 提供了依赖注入...
Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...
- `mybatis-spring`: 是Spring与MyBatis的桥接库,使得Spring可以更好地管理和初始化MyBatis的SqlSessionFactory和Mapper接口。 4. **数据库驱动**: - 根据你所使用的数据库(如MySQL、Oracle、PostgreSQL等),...
3. **Maven或Gradle配置**:学习如何在Maven或Gradle构建文件中添加Spring Boot和MyBatis的依赖。 4. **MyBatis集成**:了解如何在Spring Boot中配置MyBatis,包括mybatis-spring-boot-starter的使用,mybatis-...
Maven3+spring3+mybatis3+dwr3+mysql5.5,请用Chrome浏览器,兼容性还未调试。 自己写的一个小系统,包含一个模块:产品模块。 基本这个模块包括的内容就比较多了,CRUD,无刷新查询,图片上传等, 其实也是整个...
总的来说,这个DEMO为学习和实践Spring、MyBatis和CXF的集成提供了一个很好的起点,可以帮助开发者了解如何在实际项目中构建基于Web服务的系统。通过深入研究这个DEMO,可以掌握服务端开发的基本流程和技巧,提升在...
在Mysql+Spring3+MyBatis3的组合中,MySQL主要负责数据的存储和查询。其SQL语句的编写和优化对于整个系统的性能至关重要。例如,通过合理设计索引、避免全表扫描、利用JOIN操作等技巧,可以显著提升数据库的访问效率...