要操作的数据库:
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); } }
测试结果: