您的位置:首页 > 编程语言 > Java开发

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

2018-12-19 09:15 302 查看
原文链接:http://www.cnblogs.com/soft2018/p/10141243.html

要操作的数据库:

 

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);
}

}

测试结果:

 

转载于:https://www.cnblogs.com/soft2018/p/10141243.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: