Mybatis学习(六)

1、今天重点:Mybatis整合spring

    整合思路:
        a、SqlSessionFactory对象应该放到spring容器中作为单例存在。
        b、传统dao的开发方式中,应该从spring容器中获得sqlsession对象。
        c、Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。
        d、数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

    整合需要的jar包:
        a、spring的jar包。
        b、Mybatis的jar包。
        c、Spring+mybatis的整合包。
        d、Mysql的数据库驱动jar包。
        e、数据库连接池的jar包。

    整合的步骤:
        第一步:创建一个java工程。
        第二步:导入jar包。(上面提到的jar包)。
        第三步:mybatis的配置文件sqlmapConfig.xml。
        第四步:编写Spring的配置文件
                a、数据库连接及连接池
                b、事务管理(暂时可以不配置)
                c、sqlsessionFactory对象,配置到spring容器中
                d、mapeer代理对象或者是dao实现类配置到spring容器中。
        第五步:编写dao或者mapper文件
        第六步:测试。

2、三种dao的实现方式:我们只讲第三种,有兴趣的同学可以通过码云下载相关代码进行学习,文末有链接

    a、传统dao的开发方式
    b、使用mapper代理形式开发方式
    c、使用扫描包配置mapper代理。

3、相关代码

    UserMapper接口:
        public interface UserMapper {
            User getUserByQueryVo(QueryVo queryVo);
            int findUserCount();
            List<User> findUserList(User user);
            List<User> findUseListByIds(QueryVo queryVo);
        }

    UserMapper.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="com.kid.mybatis.mapper.UserMapper">
            <!-- 查询用户总数 -->
            <select id="findUserCount" resultType="int">
                select count(*) from user
            </select>
        </mapper>

    db.properties和log4j.properties 参照前面项目

    SqlMapperConfig.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>
                <package name="com.kid.mybatis.pojo"/>
            </typeAliases>
        </configuration>

    applicationContext.xml:
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
            xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
            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-4.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

            <!-- 加载数据库配置文件 -->
            <context:property-placeholder location="classpath:db.properties"/>

            <!-- 数据库连接池 -->
            <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
                <property name="driverClassName" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
                <property name="maxActive" value="10"/>
                <property name="maxIdle" value="5" />
            </bean>

            <!-- mapper配置 -->
            <!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
            <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" scope="prototype">
                <!-- 数据库连接池 -->
                <property name="dataSource" ref="dataSource"/>
                <!-- 加载mybatis的全局配置文件 -->
                <property name="configLocation" value="classpath:SqlMapperConfig.xml"/>
            </bean>

            <!-- 配置包扫描器 -->
            <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <!-- 配置要扫描的包 ,如果扫描多个包使用半角逗号分隔 -->
                <!-- <property name="basePackage" value="cn.kid.mybatis.mapper,com.kid.mybatis.mapper"/> -->
                <property name="basePackage" value="com.kid.mybatis.mapper"/>
            </bean>
        </beans>

下载所有项目地址:点我

项目结构图

原文地址:https://www.cnblogs.com/miantiao312/p/9649569.html

时间: 2024-11-09 03:29:52

Mybatis学习(六)的相关文章

MyBatis学习总结(六)——调用存储过程(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(六)--调用存储过程 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男");

mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)

继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-web 2.修改web.xml,配置启动Spring容器 3.新建BookServer 4.新建BookServlet 5.修改ApplicationContext.xml 6.测试 继续!!! 五.使用监听器启动Spring容器 1.修改pom.xml,添加Spring-web包(注:上一篇中的pom

spring学习 六 spring与mybatis整合

在mybatis学习中有两种配置文件 :全局配置文件,映射配置文件.mybatis和spring整合,其实就是把mybatis中的全局配置文件的配置内容都变成一个spring容器的一个bean,让spring容器进行托管.因此整合过程就是把mybatis全局配置文件的内容整合到spring的配置文件中 (一)mybatis全局配置文件 : 根标签是<configuration>, 子标签包括: <typeAliases>配置别名, <environments> 配置数据

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

Mybatis学习第一天

Mybatis第一天 2      MyBatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.

Mybatis学习---了解Mybatis

什么是Mybatis 对MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Object,普通的 Java 对象)映射成数据库中的记录.(摘自MyBatis官网) MyBatis与Ibatis 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层

MyBatis学习笔记(一)

相关使用文件的下载地址:http://pan.baidu.com/s/1mgiXI1y 1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 Public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Cla

Mybatis 学习总结

1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //

MyBatis学习总结(五)——实现关联表查询(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(五)--实现关联表查询 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TAB

MyBatis学习总结(七)——Mybatis缓存(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空. 2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,Hash