`

mybatis总结

 
阅读更多

 

orm工具的基本思想
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
2. sessionfactory  产生 session
3. session 中完成对数据的增删改查和事务提交等.
4. 在用完之后关闭session \

5. java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。

-----------------------单独使用mybatis start

            //读取数据库配置文件,获取reader

            reader    = Resources.getResourceAsReader("Configuration.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

          //增加user测试表

 

          SqlSession session = sqlSessionFactory.openSession();

 

          IUserOperation userOperation=session.getMapper(IUserOperation.class);
            userOperation.addUser(user);
            session.commit();
            System.out.println("当前增加的用户 id:"+user.getId());

-----------------------单独使用mybatis end

 

 

-----------------------mybatis与spring整合 start

 

在这一系列文章中,前面讲到纯粹用mybatis 连接数据库,然后 进行增删改查,以及多表联合查询的的例子,但实际项目中,通常会用 spring 这个沾合剂来管理 datasource 等。充分利用spring 基于接口的编程,以及aop ,ioc 带来的方便。用spring 来管理 mybatis 与管理hibernate 有很多类似的地方

 

1. 首先对前面的工程结构做一点改变,在src_user源代码目录下建立文件夹config ,并将原来的 mybatis 配置文件 Configuration.xml 移动到这个文件夹中并在config 文家夹中建立 spring 配置文件:applicationContext.xml ,这个配置文件里最主要的配置:

 

< !--本示例采用DBCP连接池,应预先把DBCPjar包复制到工程的lib目录下。 --> 

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"/>
     <property name="username" value="root"/> 
     <property name="password" value="password"/> 
  </bean> 

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <!--dataSource属性指定要用到的连接池--> 
     <property name="dataSource" ref="dataSource"/> 
     <!--configLocation属性指定mybatis的核心配置文件--> 
     <property name="configLocation" value="config/Configuration.xml"/> 
  </bean>

 

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
     <!--sqlSessionFactory属性指定要用到的SqlSessionFactory实例--> 
     <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
     <!--mapperInterface属性指定映射器接口,用于实现此接口并生成映射器对象--> 
     <property name="mapperInterface" value="com.yihaomen.mybatis.inter.IUserOperation" />
  </bean> 



[b]这里面的重点就是 org.mybatis.spring.SqlSessionFactoryBean 与 org.mybatis.spring.mapper.MapperFactoryBean[b] 实现了 spring  的接口,并产生对象。详细可以查看 mybatis-spring 代码。(http://code.google.com/p/mybatis/,如果仅仅使用,固定模式,这样配置就好。


然后写测试程序

 程序代码


package com.yihaomen.test;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.yihaomen.mybatis.inter.IUserOperation;
import com.yihaomen.mybatis.model.Article;
import com.yihaomen.mybatis.model.User;


public class MybatisSprintTest {
    
    private static ApplicationContext ctx;  
    
    static 
    {  
        ctx = new ClassPathXmlApplicationContext("config/applicationContext.xml"); 
    }        
      
    public static void main(String[] args)  
    {  
        IUserOperation mapper = (IUserOperation)ctx.getBean("userMapper"); 
        //测试id=1的用户查询,根据数据库中的情况,可以改成你自己的.
        System.out.println("得到用户id=1的用户信息");
        User user = mapper.selectUserByID(1);
        System.out.println(user.getUserAddress()); 
        
        //得到文章列表测试
        System.out.println("得到用户id1的所有文章列表");
        List<Article> articles = mapper.getUserArticles(1);
        
        for(Article article:articles){
            System.out.println(article.getContent()+"--"+article.getTitle());
        }
        
    }  

    
}



-----------------------mybatis与spring整合 end

 

-----------------------mybatis与spring mvc整合 start

 

前面几篇文章已经讲到了mybatisspring 的集成。但这个时候,所有的工程还不是web工程,虽然我一直是创建的web 工程。今天将直接用mybatisSpring mvc 的方式集成起来,源码在本文结尾处下载.主要有以下几个方面的配置
1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatcher
2. mvc-dispatcher-servlet.xml 文件配置
3. spring applicationContext.XML文件配置(与数据库相关,与mybatis sqlSessionFaction 整合,扫描所有mybatis mapper 文件等.)
4. 编写controller 
5. 编写页面代码.

 

1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatcher

 程序代码


<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:config/applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>
            org.springframework.web.context.ContextCleanupListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

 

 

2. web.xml 同目录下配置 mvc-dispatcher-servlet.xml 文件,这个文件名前面部分必须与你在web.xml里面配置的DispatcherServlet servlet名字对应.其内容为:

 程序代码


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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">

    <context:component-scan base-package="com.yihaomen.controller" />
    <mvc:annotation-driven />
    
    <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>  
    <mvc:default-servlet-handler/>  
     
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

< /beans>

 

 

3. 在源码目录 config 目录下配置 spring 配置文件 applicationContext.xml

 程序代码


< !--本示例采用DBCP连接池,应预先把DBCPjar包复制到工程的lib目录下。 -->   
    <context:property-placeholder    location="classpath:/config/database.properties" />
        
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver"
        p:url="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8" 
        p:username="root" p:password="password"
        p:maxActive="10" p:maxIdle="10">
    </bean>
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
    </bean>
    
     
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <!--dataSource属性指定要用到的连接池--> 
     <property name="dataSource" ref="dataSource"/> 
     <!--configLocation属性指定mybatis的核心配置文件--> 
     <property name="configLocation" value="classpath:config/Configuration.xml" />
     <!-- 所有配置的mapper文件 -->
     <property name="mapperLocations" value="classpath*:com/yihaomen/mapper/*.xml" />
  </bean> 
  
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     <property name="basePackage" value="com.yihaomen.inter" />     
  </bean>



不知道为什么,一旦我用了 MapperScannerConfigurer 去扫描所有的mapper 接口时,数据库配置datasource 就不能用读取database.properties文件了。报错: Cannot load JDBC driver class '${jdbc.driverClassName}',网上有人说在spring 3.1.1 下用 sqlSessionFactionBean 注入可以解决,但我用 spring 3.1.3 还是有问题,所以只好把数据库连接信息直接配置在了XML 文件里面。

 

4. 编写 controller 

 程序代码


package com.yihaomen.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.yihaomen.inter.IUserOperation;
import com.yihaomen.model.Article;

@Controller
@RequestMapping("/article")
public class UserController {
    @Autowired
    IUserOperation userMapper;

    @RequestMapping("/list")
    public ModelAndView listall(HttpServletRequest request,HttpServletResponse response){
        List<Article> articles=userMapper.getUserArticles(1); 
        ModelAndView mav=new ModelAndView("list");
        mav.addObject("articles",articles);
        return mav;
    }
}

5. 页面文件:
[code]
< c:forEach items="${articles}" var="item">  
        ${item.id }--${item.title }--${item.content }<br />
    </c:forEach>



运行结果:

 

当然还有 mybatis Configure.xml  配置文件,与上一讲的差不多,唯一不同的就是不用再配置类似如下的:   <mapper resource="com/yihaomen/mapper/User.xml"/> ,所有这些都交给 在配置 sqlSessionFactory 的时候,由  <property name="mapperLocations" value="classpath*:com/yihaomen/mapper/*.xml" /> 去导入了。
   

分享到:
评论

相关推荐

    mybatis总结.md

    mybatis总结,可学习

    MYBatis总结.docx

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

    MyBatis总结!!!!!

    MyBatis总结!!!!!

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

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

    Mybatis总结.xmind

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

    spring和mybatis总结

    Spring 通过 SqlSessionFactoryBean 和 MyBatis 的配置文件来初始化 SqlSessionFactory,然后通过 DataSourceTransactionManager 进行事务管理。此外,Spring 还可以利用 AOP 实现事务的声明式管理,简化代码。 **...

    Mybatis总结.md

    学习Mybatsi基础,实现的步骤 ,0基础入门案列,其他也没有过多的了,这是入门的第一天做的笔记,有问题大家可以指出。

    Mybatis总结

    学习Mybatis的自我总结

    mybatis的总结一

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

    Mybatis的笔记pdf

    总结来说,Mybatis 是一款优秀的 Java 持久层框架,它的主要优点包括简单易学、灵活的 SQL 编写、支持 ORM 映射和动态 SQL。通过 Mybatis,开发者可以更专注于业务逻辑,而不是繁琐的数据库操作,从而提高开发效率和...

    MyBatis基本使用总结

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

    Mybatis入门资源

    "Mybatis总结.pptx"可能是对整个Mybatis学习过程的全面回顾,包括所有上述知识点的综合,也可能包含实际项目中的一些最佳实践。 至于".txt"文件,如"学习(五)用到的表.txt"、"学习(五、六)用到的表.txt"、"快速...

    mybatis 资料 帮助文档

    "mybatis总结.txt" 可能是一份学习笔记或者关键点汇总,包含了一些重要的知识点,比如 MyBatis 的缓存机制、结果映射、参数映射、自定义插件、SQL执行器的选择等,这些都是提升开发效率和优化性能的关键点。...

    mybatis老师总结

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

    MyBatis SpringMVC 整合总结

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

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

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

    Mybatis.zip思维导图纯手画

    Mybatis总结,思维导图,包含多种文件格式 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 ...

Global site tag (gtag.js) - Google Analytics