实现向 tedu_ums
数据库的 t_users
数据表中插入数据。
1 创建项目 DAY07-MyBatis-Sample
,生成 web.xml
,在 web.xml
中配置(2项),添加 spring-webmvc
依赖,复制Spring配置文件,添加Tomcat运行环境;
2 添加新的依赖: mybatis
、 mybatis-spring
、 spring-jdbc
:
<!-- Spring-JDBC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency>
以上依赖中, spring-jdbc
的版本需与 spring-webmvc
保持一致!(同一个项目中,以 spring-
作为前缀的依赖都应该使用相同版本)
3 创建实现类 cn.tedu.spring.entity.User
,在该类中声明 Integer id
、 String username
、 String password
属性,及相关方法;
4 设计持久层接口:创建 cn.tedu.spring.mapper.UserMapper
接口,并在接口中添加抽象方法:
Integer reg(User user);
注意:增删改操作固定返回受影响的行数,在设计方法时,可以将返回值声明为Integer类型,或使用void表示无返回值也可以。
5 从FTP下载 mybatis.zip
文件,将解压得到的 EmpMapper.xml
重命名为 UserMapper.xml
(推荐这样命名),然后在项目的 src/main/resource
新建文件夹 mappers
,将 UserMapper.xml
复制到 mappers
文件夹中;
6 编辑 UserMapper.xml
文件:
<!-- MyBatis的接口映射文件,根节点是mapper --> <!-- 接口映射文件是与Java接口文件(interface)相对应的 --> <!-- 根节点的namespace属性用于指定Java接口文件 --> <mapper namespace="cn.tedu.spring.mapper.UserMapper"> <!-- 节点名称取决于需要执行的操作 --> <!-- 例如增加操作应该使用insert节点 --> <!-- id属性(*)的值是Java接口中的方法名称 --> <!-- parameterType属性的值是参数类型 --> <!-- 节点中间编写SQL语句 --> <insertid="reg" parameterType="cn.tedu.spring.entity.User"> INSERT INTO t_users ( username, password ) VALUES ( #{username}, #{password} ) </insert> </mapper>
7 添加依赖: mysql-connector-xxxx
、 dbcp
、 junit
;
8 在 src/main/resources
下配置 db.properties
;
9 从此前的项目中复制 spring-dao.xml
,在该配置文件中,至少配置了:加载 db.properties
、 BasicDataSource
10 在 spring-dao.xml
中,配置:
<!-- 配置MapperScannerConfigurer ,扫描mapper的配置在哪里--> <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 配置接口文件所在的包 --> <propertyname="basePackage" value="cn.tedu.spring.mapper" /> </bean> <!-- 配置SqlSessionFactoryBean --> <beanclass="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 配置数据源:如何连接数据库等 --> <propertyname="dataSource" ref="dataSource" /> <!-- 配置XML文件的位置 --> <propertyname="mapperLocations" value="classpath:mappers/UserMapper.xml" /> </bean>
11 编写测试类,添加测试方法:
@Test public void testReg(){ AbstractApplicationContext ac = new ClassPathXmlApplicationContext( "spring-mvc.xml", "spring-dao.xml"); UserMapper userMapper = ac.getBean( "userMapper", UserMapper.class); User user = new User(); user.setUsername("Tom1"); user.setPassword("123456"); Integer affectedRows = userMapper.reg(user); System.out.println( "affectedRows=" + affectedRows); ac.close(); }
xxmapper.xml
的 MapperScannerConfigurer
SqlSessionFactoryBean
,需要用到数据库连接池的 数据源datasource
pom.xml
<dependencies> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.8.RELEASE</version> </dependency> <!-- Spring-JDBC,要和spring-webmvc的版本一致 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.2.8.RELEASE</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- MyBatis-Spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <!-- MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.28</version> </dependency> <!-- DBCP --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
db.properties
文件 url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8 driver=com.mysql.jdbc.Driver user=root password=root initSize=5 maxSize=10
spring-dao.xml
文件 <?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> <!-- 加载db.properties --> <util:propertiesid="dbConfig" location="classpath:db.properties" /> <!-- 数据源 --> <beanid="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <propertyname="url" value="#{dbConfig.url}" /> <propertyname="driverClassName" value="#{dbConfig.driver}" /> <propertyname="username" value="#{dbConfig.user}" /> <propertyname="password" value="#{dbConfig.password}" /> <propertyname="initialSize" value="#{dbConfig.initSize}" /> <propertyname="maxActive" value="#{dbConfig.maxSize}" /> </bean> <!-- 配置MapperScannerConfigurer,自动扫描整个包,并且spring会自动创建UserMapper接口对象--> <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 配置接口文件所在的包 --> <propertyname="basePackage" value="cn.tedu.spring.mapper" /> </bean> <!-- 配置SqlSessionFactoryBean --> <beanclass="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 配置数据源:如何连接数据库等 --> <propertyname="dataSource" ref="dataSource" /> <!-- 配置XML文件的位置 --> <propertyname="mapperLocations" value="classpath:mappers/UserMapper.xml" /> </bean> </beans>