Mybatis(五)Spring整合Mybatis之mapper动态代理开发

要操作的数据库:

IDEA创建的Java工程,目录结构如下:

一、导包

  1、spring的jar包

  2、Mybatis的jar包

  3、Spring+mybatis的整合包。

  4、Mysql的数据库驱动jar包。

  5、数据库连接池的jar包。

  6、日志包

 二、书写数据库对应的bean类

public class User {
    private Integer uId;
    private String username;
    private String sex;
    private String address;

    public Integer getuId() {
        return uId;
    }

    public void setuId(Integer uId) {
        this.uId = uId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "uId=" + uId +
                ", username='" + username + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

三、mapper动态接口UserMapper与对应的映射文件UserMapper.xml

import dyh.bean.User;
public interface UserMapper {
    public User findUserById(Integer id);
}
<?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="dyh.mapper.UserMapper">
    <select id="findUserById" parameterType="Integer" resultType="User">
        SELECT * FROM users WHERE uId = #{uId}
    </select>
</mapper>

四、配置文件

  (1)、jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/school?characterEncoding=utf-8
jdbc.username=root
jdbc.password=dyhroot

  (2)、spring核心配置文件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:jdbc.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>
    
    <!-- Mybatis的工厂 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 核心配置文件的位置 -->
        <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
    </bean>
    

    <!-- Mapper动态代理开发 -->
    <!--<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
        <!--<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>-->
        <!--<property name="mapperInterface" value="dyh.mapper.UserMapper"/>-->
    <!--</bean>-->
    
    <!-- Mapper动态代理开发   扫描 -->
        <!--开发时候都是用扫描方式进行开发-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 基本包 -->
        <property name="basePackage" value="dyh.mapper"/>
    </bean>

</beans>

  (3)、Mybatis核心配置文件sqlMapConfig.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>
        <!--这样写就是该文件中所有的"dyh.bean.User" 都用User代替了-->
        <!--这样写有一个弊端,就是除了用户之外还有其他实体类,比如Order、Customer…… 那就要写n别名了,所以不推荐使用-->
        <!--<typeAlias type="dyh.bean.User" alias="User"/>-->

        <!--推荐使用包的形式-->
        <package name="dyh.bean"/>
    </typeAliases>
    
    <!-- Mapper的位置  Mapper.xml 写Sql语句的文件的位置 -->
    <mappers>
        <!--<mapper resource="orderMapper/OrderMapper.xml"/>-->
        <!--使用mapper接口类路径
        如:<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>
        注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。-->

        <package name="dyh.mapper"/>

        <!--注册指定包下的所有mapper接口
        如:<package name="cn.itcast.mybatis.mapper"/>
        注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。-->

        <!--注意:但是这两种引入sql映射文件的办法,用IDEA的maven工程,这样写有问题,还没找到原因,有可能是不可以这么书写-->
    </mappers>

</configuration>

  (4)、日志文件配置log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

五、测试

public class MybatisTest {
    @Test
    public void fun(){
        ApplicationContext ct = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = (UserMapper) ct.getBean("userMapper");
        User user = userMapper.findUserById(1);
        System.out.println(user);
    }

}

测试结果:

猜你喜欢

转载自www.cnblogs.com/soft2018/p/10141243.html