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

要操作的数据库:

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

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

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

一、导包

  1、spring的jar包

  2、Mybatis的jar包

  3、Spring+mybatis的整合包。

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

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

  6、日志包

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

二、书写数据库对应的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);
} }

测试结果:

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

上一篇:创建本地Ubuntu镜像


下一篇:java 线程安全 Lock