MyBatis,Spring整合简易教程

在实际的项目开发中,我们需要将MyBatis和Spring进行整合,通过Spring 的依赖注入以减少代码的耦合。本文以MyEclipse和MySQL数据库为开发环境简单的讲解一下MyBatis和Spring的整合过程。

首先我们创建一个Java Project,名称任意,然后导入所需要包: spring3.1.1 mybatis-3.1.1.jar mysql-connector-java-5.1.2-beta-bin.jar  , mybatis-spring-1.1.1.jar

第一步:创建数据库表
在Navicat下执行如下sql命令创建表User.

Sql代码 
  1. CREATETABLEuser
  2. (  
  3.   id int(11) NOTNULL AUTO_INCREMENT,  
  4.   username varchar(20) NOTNULL,  
  5. passwordvarchar(20) NOTNULL,  
  6. PRIMARYKEY (id)  
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

然后插入测试数据
Sql代码 
  1. INSERTINTOuserVALUES ('1''admin''admin');  


第二步:创建model
创建一个model包并在其下创建一个User.java文件。
Java代码 
  1. package model;  
  2. publicclass User {  
  3. privateint id;  
  4. private String username;  
  5. private String password;  
  6. public User(){  
  7.     }  
  8. publicint getId() {  
  9. return id;  
  10.     }  
  11. publicvoid setId(int id) {  
  12. this.id = id;  
  13.     }  
  14. public String getUsername() {  
  15. return username;  
  16.     }  
  17. publicvoid setUsername(String username) {  
  18. this.username = username;  
  19.     }  
  20. public String getPassword() {  
  21. return password;  
  22.     }  
  23. publicvoid setPassword(String password) {  
  24. this.password = password;  
  25.     }  
  26. public String toString(){  
  27. return"User [id = "+ id +" , username = "+ username +"]" + " , password = "+ password;  
  28.     }  
  29. }  


第三步:创建DAO接口(这里我们对增删改查进行简单的实现)
创建一个包dao,并在其下创建一个UserMapper.java文件作为DAO接口。
Java代码 
  1. package dao;  
  2. import model.User;  
  3. publicinterface UserMapper {  
  4. public User selectUser(User user);  
  5. publicvoid insertUser(User user);  
  6. publicvoid updateUser(User user);  
  7. publicvoid deleteUser(int userId);  
  8. }  


第四步:实现DAO接口
在dao包下创建一个UserMapper.xml文件作为上一步创建的DAO接口的实现。
Xml代码 
  1. < span>xmlversion="1.0"encoding="UTF-8"?<
  2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd"<
  3. < span>mappernamespace="dao.UserMapper"<
  4. < span>selectid="selectUser"parameterType="model.User"resultType="model.User"<
  5.     SELECT * FROM user WHERE username=#{username} AND password=#{password}  
  6. </>select<
  7. < span>insertid="insertUser"parameterType="model.User"flushCache="true"<
  8.    INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password})  
  9. </>insert<
  10. < span>updateid="updateUser"parameterType="model.User"<
  11.     UPDATE user SET password=#{password} WHERE id=#{id}  
  12. </>update<
  13. < span>deleteid="deleteUser"parameterType="int"<
  14.     DELETE FROM user WHERE id=#{userId}  
  15. </>delete<
  16. </>mapper<

这里对这个xml文件作几点说明:
1. namespace要指定为接口的类路径。
2. select,insert,update,delete的id必须要和UserMapper.java接口中的方法同名。

第五步:创建MyBatis的配置文件
在src下创建一个mybatis-config.xml文件,由于我们的数据源部分是要交给Spring管理,所以此处的配置文件只包含xml映射文件的位置信息。
Xml代码 
  1. < span>xmlversion="1.0"encoding="UTF-8"?<
  2.     "-//mybatis.org//DTD Config 3.0//EN"  
  3.     "http://mybatis.org/dtd/mybatis-3-config.dtd"<
  4. < span>configuration<
  5. < span>mappers<
  6. < span>mapperresource="dao/UserMapper.xml"/<
  7. </>mappers<
  8. </>configuration<


第六步:在Spring中配置数据源
在src下创建一个ApplicationContext.xml文件作为Spring的配置文件,这里我们使用Spring自带的Jdbc数据源,读者可以根据实际需要替换为其他数据源。
Xml代码 
  1. < span>xmlversion="1.0"encoding="UTF-8"?<
  2. < span>beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:tx="http://www.springframework.org/schema/tx"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8. xsi:schemaLocation="http://www.springframework.org/schema/beans   
  9.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  10.     http://www.springframework.org/schema/tx   
  11.     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
  12.     http://www.springframework.org/schema/aop    
  13.     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"<
  14. <
  15. < span>beanid="jdbcDataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"<
  16. < span>propertyname="driverClassName"<
  17. < span>value<org.gjt.mm.mysql.Driver</>value<
  18. </>property<
  19. < span>propertyname="url"<
  20. < span>value<jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8</>value<
  21. </>property<
  22. < span>propertyname="username"<
  23. < span>value<root</>value<
  24. </>property<
  25. < span>propertyname="password"<
  26. < span>value<123456</>value<
  27. </>property<
  28. </>bean<
  29. < span>beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"<
  30. < span>propertyname="dataSource"ref="jdbcDataSource"/<
  31. < span>propertyname="configLocation"value="classpath:mybatis-config.xml"<</>property<
  32. </>bean<
  33. < span>beanid="userMapper"class="org.mybatis.spring.mapper.MapperFactoryBean"<
  34. < span>propertyname="mapperInterface"value="dao.UserMapper"<</>property<
  35. < span>propertyname="sqlSessionFactory"ref="sqlSessionFactory"<</>property<
  36. </>bean<
  37. </>beans<

关于Spring配置的说明:
Spring没有内置的提供对MyBatis的支持,配置sqlSessionFactory和userMapper所需要的class是来自于mybatis-spring-1.1.1.jar。

第七步:测试
在src下创建一个test包,并在其下创建一个test.java文件
Java代码 
  1. package test;  
  2. import model.User;  
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5. import dao.UserMapper;  
  6. publicclass test {  
  7. publicstaticvoid main(String[] args) {  
  8.         ApplicationContext ctx=null;  
  9.         ctx=new ClassPathXmlApplicationContext("applicationContext.xml");  
  10.         UserMapper userMapper=(UserMapper)ctx.getBean("userMapper");  
  11.         User u=new User();  
  12.         u.setUsername("admin");  
  13.         u.setPassword("admin");  
  14.         System.out.println(userMapper.selectUser(u));  
  15. //插入(去掉下面的注释进行调试)
  16. /*
  17.         User insertUser=new User();
  18.         insertUser.setUsername("testUsername");
  19.         insertUser.setPassword("testPassword");
  20.         userMapper.insertUser(insertUser);
  21.         */
  22. //更新(去掉下面的注释进行调试)
  23. /*
  24.         u.setId(1);
  25.         u.setPassword("updatePassword");
  26.         userMapper.updateUser(u);
  27.         */
  28. //删除(去掉下面的注释进行调试)
  29. /*
  30.         userMapper.deleteUser(9);
  31.         */
  32.     }  
  33. }  

你可能感兴趣的:(MyBatis,Spring整合简易教程)