Mybatis学习

Posted miantiao312

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

下载所有项目地址:点我

项目结构图

技术分享图片

以上是关于Mybatis学习的主要内容,如果未能解决你的问题,请参考以下文章

markdown [mybatis参考]关于mybatis #mybatis的一些片段

Mybatis 学习笔记总结

Mybatis学习笔记:动态SQL

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

mybatis动态sql片段与分页,排序,传参的使用

MyBatis动态SQL标签用法