Mybatis整合Spring配置

第一部分:配置Spring框架

配置SpringMVC的步骤

配置流程图

导入包(哪些包,基本包5个,1日志依赖包,2webmvc支持包)SpringMVC配置

  1. <!-- jsp -->
  2.  
  3. <dependency>
  4.  
  5. <groupId>javax.servlet.jsp</groupId>
  6.  
  7. <artifactId>javax.servlet.jsp-api</artifactId>
  8.  
  9. <version>2.2.1</version>
  10.  
  11. <scope>provided</scope>
  12.  
  13. </dependency>
  14.  
  15. <!-- servlet -->
  16.  
  17. <dependency>
  18.  
  19. <groupId>javax.servlet</groupId>
  20.  
  21. <artifactId>javax.servlet-api</artifactId>
  22.  
  23. <version>3.1.0</version>
  24.  
  25. <scope>provided</scope>
  26.  
  27. </dependency>
  28. <!-- spring mvc -->
  29.  
  30. <dependency>
  31.  
  32. <groupId>org.springframework</groupId>
  33.  
  34. <artifactId>spring-webmvc</artifactId>
  35.  
  36. <version>4.3.16.RELEASE</version>
  37.  
  38. </dependency>
  1. 构建一个请求
  1. <form action="${pageContext.request.contextPath }/admin/addAdmin" method="post">
  2.  
  3. 管理员名称:<input name="admin_name" type="text"><input type="submit" value="增加管理员">
  4.  
  5. </form>

编辑web.xml配置核心控制器

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <web-app version="3.1"
  4.  
  5. xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  6.  
  7. xmlns:xml="http://www.w3.org/XML/1998/namespace"
  8.  
  9. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  10.  
  11. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd ">
  12.  
  13. <!-- 编码支持过滤器 -->
  14.  
  15. <filter>
  16.  
  17. <filter-name>characterEncodingFilter</filter-name>
  18.  
  19. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  20.  
  21. <init-param>
  22.  
  23. <param-name>encoding</param-name>
  24.  
  25. <param-value>UTF-8</param-value>
  26.  
  27. </init-param>
  28.  
  29. </filter>
  30.  
  31. <filter-mapping>
  32.  
  33. <filter-name>characterEncodingFilter</filter-name>
  34.  
  35. <url-pattern>/*</url-pattern>
  36.  
  37. </filter-mapping>
  38.  
  39. <!-- 配置核心控制器 -->
  40.  
  41. <servlet>
  42.  
  43. <servlet-name>dispatcherServlet</servlet-name>
  44.  
  45. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  46.  
  47. <!-- 指定配置类的位置,指定包名会加载该包下的所有配置类 -->
  48.  
  49. <init-param>
  50.  
  51. <param-name>contextConfigLocation</param-name>
  52.  
  53. <param-value>cn.gzsxt.config</param-value>
  54.  
  55. </init-param>
  56.  
  57. <!-- 修改支持配置类的Spring容器 -->
  58.  
  59. <init-param>
  60.  
  61. <param-name>contextClass</param-name>
  62.  
  63. <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
  64.  
  65. </init-param>
  66.  
  67. <load-on-startup>1</load-on-startup>
  68.  
  69. </servlet>
  70.  
  71. <servlet-mapping>
  72.  
  73. <servlet-name>dispatcherServlet</servlet-name>
  74.  
  75. <url-pattern>/</url-pattern>
  76.  
  77. </servlet-mapping>
  78.  
  79. </web-app>

编写业务控制器

  1. package cn.gzsxt.controller;
  2.  
  3. import org.springframework.stereotype.Controller;
  4.  
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6.  
  7. import org.springframework.web.context.annotation.SessionScope;
  8.  
  9. @Controller
  10.  
  11. @SessionScope
  12.  
  13. @RequestMapping(value="/admin")
  14.  
  15. public class AdminController {
  16.  
  17. @RequestMapping(value="/addAdmin")
  18.  
  19. public String addAdmin() {
  20.  
  21. System.out.println("-增加管理员-");
  22.  
  23. return "/addAdmin.jsp";
  24.  
  25. }
  26.  
  27. }

编写配置类

  1.  
  2. @Configuration
  3.  
  4. @ComponentScan(basePackages="cn.gzsxt")
  5.  
  6. public class ContextConfig {
  7.  
  8. }

--容器配置类

  1. package cn.gzsxt.config;
  2.  
  3. import org.springframework.context.annotation.Configuration;
  4.  
  5. import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
  6.  
  7. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  8.  
  9. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  10.  
  11. @Configuration
  12.  
  13. @EnableWebMvc //<mvc:annotation-driver>
  14.  
  15. public class MvcConfig extends WebMvcConfigurerAdapter {
  16.  
  17. //<mvc:default-servlet-handler>,放开静态资源访问
  18.  
  19. @Override
  20.  
  21. public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
  22.  
  23. configurer.enable();
  24.  
  25. }
  26.  
  27. }

--SpringMVC配置类

  1. 编写返回的页面

《返回到请求页面就可以了》

第二部分:配置Mybatis框架

Mybatis配置流程图

导入包(JDBC驱动包,Mybatis框架包,Log4j)配置步骤说明

  1. <!-- mybatis -->
  2.  
  3. <dependency>
  4.  
  5. <groupId>org.mybatis</groupId>
  6.  
  7. <artifactId>mybatis</artifactId>
  8.  
  9. <version>3.4.1</version>
  10.  
  11. </dependency>
  12.  
  13. <!-- mysql -->
  14.  
  15. <dependency>
  16.  
  17. <groupId>mysql</groupId>
  18.  
  19. <artifactId>mysql-connector-java</artifactId>
  20.  
  21. <version>5.1.47</version>
  22.  
  23. </dependency>
  24.  
  25. <!-- junit -->
  26.  
  27. <dependency>
  28.  
  29. <groupId>junit</groupId>
  30.  
  31. <artifactId>junit</artifactId>
  32.  
  33. <version>4.12</version>
  34.  
  35. <scope>test</scope>
  36.  
  37. </dependency>

创建一个总配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >
  4.  
  5. <configuration>
  6.  
  7. <environments default="rbac">
  8.  
  9. <environment id="rbac">
  10.  
  11. <transactionManager type="JDBC"></transactionManager>
  12.  
  13. <dataSource type="POOLED">
  14.  
  15. <property name="driver" value="org.gjt.mm.mysql.Driver" />
  16.  
  17. <property name="url" value="jdbc:mysql://localhost:3306/rbac-1227" />
  18.  
  19. <property name="username" value="root" />
  20.  
  21. <property name="password" value="123456" />
  22.  
  23. </dataSource>
  24.  
  25. </environment>
  26.  
  27. </environments>
  28.  
  29. </configuration>

创建一个帮助类获得会话对象

  1. package cn.gzsxt.utils;
  2.  
  3. import java.io.IOException;
  4.  
  5. import java.io.Reader;
  6.  
  7. import org.apache.ibatis.io.Resources;
  8.  
  9. import org.apache.ibatis.session.SqlSession;
  10.  
  11. import org.apache.ibatis.session.SqlSessionFactory;
  12.  
  13. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  14.  
  15. public class MybatisUtils {
  16.  
  17. public static final SqlSessionFactory SESSION_FACTORY=MybatisUtils.createSqlSessionFactory();
  18.  
  19. private static SqlSessionFactory createSqlSessionFactory() {
  20.  
  21. try {
  22.  
  23. //读取配置文件
  24.  
  25. Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  26.  
  27. //创建会话工厂构建类对象
  28.  
  29. SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
  30.  
  31. //返回会话工厂
  32.  
  33. return builder.build(reader);
  34.  
  35. } catch (IOException e) {
  36.  
  37. // TODO Auto-generated catch block
  38.  
  39. e.printStackTrace();
  40.  
  41. }
  42.  
  43. return null;
  44.  
  45. }
  46.  
  47. public static SqlSession getSqlSession() {
  48.  
  49. return SESSION_FACTORY.openSession();
  50.  
  51. }
  52.  
  53. public static void main(String[] args) {
  54.  
  55. System.out.println(MybatisUtils.getSqlSession());
  56.  
  57. }
  58.  
  59. }

创建一个映射接口(包括操作SQL语句的)

  1. package cn.gzsxt.mapper;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.apache.ibatis.annotations.Insert;
  6.  
  7. import org.apache.ibatis.annotations.Options;
  8.  
  9. /**
  10.  
  11. * 管理员映射接口,用于操作tb_admin表
  12.  
  13. *
  14.  
  15. * @author ranger
  16.  
  17. *
  18.  
  19. */
  20.  
  21. public interface AdminMapper {
  22.  
  23. /**
  24.  
  25. * 增加管理员记录
  26.  
  27. *
  28.  
  29. * @param admin
  30.  
  31. * @return
  32.  
  33. */
  34.  
  35. @Insert("INSERT INTO tb_admin(admin_name, admin_account, admin_pwd, admin_status, admin_create_date, role_id) VALUES (#{admin_name}, #{admin_account}, #{admin_pwd}, #{admin_status}, #{admin_create_date}, #{role_id})")
  36.  
  37. @Options(useGeneratedKeys = true, keyProperty = "admin_id")
  38.  
  39. int insert(Map<String, Object> admin);
  40.  
  41. }

在总配置文件加载该映射接口

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >
  4.  
  5. <configuration>
  6.  
  7. <environments default="rbac">
  8.  
  9. <environment id="rbac">
  10.  
  11. <transactionManager type="JDBC"></transactionManager>
  12.  
  13. <dataSource type="POOLED">
  14.  
  15. <property name="driver" value="org.gjt.mm.mysql.Driver" />
  16.  
  17. <property name="url" value="jdbc:mysql://localhost:3306/rbac-1227" />
  18.  
  19. <property name="username" value="root" />
  20.  
  21. <property name="password" value="123456" />
  22.  
  23. </dataSource>
  24.  
  25. </environment>
  26.  
  27. </environments>
  28.  
  29. <mappers>
  30.  
  31. <mapper class="cn.gzsxt.mapper.AdminMapper"/>
  32.  
  33. </mappers>
  34.  
  35. </configuration>

编写一个测试类,测试插入数据

第三部分:整合这个两个框架

配置步骤:

  1. 导入包(哪些包)

(1)Mybatis-Spring整合包

(2)第三方数据源包(DBCP2)

(3)SpringJdbc+SpringTx (事务的支持)

  1. <!-- mybatis-spring -->
  2.  
  3. <dependency>
  4.  
  5. <groupId>org.mybatis</groupId>
  6.  
  7. <artifactId>mybatis-spring</artifactId>
  8.  
  9. <version>1.3.1</version>
  10.  
  11. </dependency>
  12.  
  13. <!-- spring jdbc -->
  14.  
  15. <dependency>
  16.  
  17. <groupId>org.springframework</groupId>
  18.  
  19. <artifactId>spring-jdbc</artifactId>
  20.  
  21. <version>4.3.16.RELEASE</version>
  22.  
  23. </dependency>
  24.  
  25. <!-- dbcp2 -->
  26.  
  27. <dependency>
  28.  
  29. <groupId>org.apache.commons</groupId>
  30.  
  31. <artifactId>commons-dbcp2</artifactId>
  32.  
  33. <version>2.2.0</version>
  34.  
  35. </dependency>
  36.  
  37. <!-- spring-test -->
  38.  
  39. <dependency>
  40.  
  41. <groupId>org.springframework</groupId>
  42.  
  43. <artifactId>spring-test</artifactId>
  44.  
  45. <version>4.3.16.RELEASE</version>
  46.  
  47. <scope>test</scope>
  48.  
  49. </dependency>

创建数据源

  1. @Value("${db.driverClassName}")
  2.  
  3. private String driverClassName;
  4.  
  5. @Value("${db.url}")
  6.  
  7. private String url;
  8.  
  9. @Value("${db.username}")
  10.  
  11. private String username;
  12.  
  13. @Value("${db.password}")
  14.  
  15. private String password;
  16.  
  17. //第一步:创建一个数据源
  18.  
  19. @Bean
  20.  
  21. public DataSource getDataSource() {
  22.  
  23. BasicDataSource dataSource=new BasicDataSource();
  24.  
  25. dataSource.setDriverClassName(driverClassName);
  26.  
  27. dataSource.setUrl(url);
  28.  
  29. dataSource.setUsername(username);
  30.  
  31. dataSource.setPassword(password);
  32.  
  33. return dataSource;
  34.  
  35. }
  1. 创建支持Spring数据源的会话工厂
  1. //第二步:获得会话工厂
  2.  
  3. @Bean(name="sqlSessionFactory")
  4.  
  5. public SqlSessionFactory getSessionFactory() {
  6.  
  7. SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
  8.  
  9. //指定使用的数据源
  10.  
  11. factoryBean.setDataSource(this.getDataSource());
  12.  
  13. try {
  14.  
  15. factoryBean.afterPropertiesSet();
  16.  
  17. return factoryBean.getObject();
  18.  
  19. } catch (Exception e) {
  20.  
  21. // TODO Auto-generated catch block
  22.  
  23. e.printStackTrace();
  24.  
  25. }
  26.  
  27. return null;
  28.  
  29. }

扫描映射接口的动态对象到Spring容器里面

  1. //扫描映射接口的动态对象到Spring容器
  2.  
  3. @MapperScan(basePackages="cn.gzsxt.mapper",annotationClass=Mapper.class)

配置事务代理

  1. @EnableTransactionManagement //<tx:annotation-driver>
  2.  
  3. //第四步:配置事务代理
  4.  
  5. @Bean
  6.  
  7. public DataSourceTransactionManager getDataSourceTransactionManager() {
  8.  
  9. DataSourceTransactionManager dstm=new DataSourceTransactionManager();
  10.  
  11. //指定需要事务代理的数据源
  12.  
  13. dstm.setDataSource(this.getDataSource());
  14.  
  15. return dstm;
  16.  
  17. }

删除之前Mybatis帮助类以及配置文件。因为Mybatis配置好整合以后,已经交由Spring管理了。所以不需要原来的配置文件以及帮助类了!!

  1. 修改映射接口增加@Mapper注解
  1. package cn.gzsxt.mapper;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.apache.ibatis.annotations.Insert;
  6.  
  7. import org.apache.ibatis.annotations.Mapper;
  8.  
  9. import org.apache.ibatis.annotations.Options;
  10.  
  11. /**
  12.  
  13. * 管理员映射接口,用于操作tb_admin表
  14.  
  15. *
  16.  
  17. * @author ranger
  18.  
  19. *
  20.  
  21. */
  22.  
  23. @Mapper //增加扫描注解!!!
  24.  
  25. public interface AdminMapper {
  26.  
  27. /**
  28.  
  29. * 增加管理员记录
  30.  
  31. *
  32.  
  33. * @param admin
  34.  
  35. * @return
  36.  
  37. */
  38.  
  39. @Insert("INSERT INTO tb_admin(admin_name, admin_account, admin_pwd, admin_status, admin_create_date, role_id) VALUES (#{admin_name}, #{admin_account}, #{admin_pwd}, #{admin_status}, #{admin_create_date}, #{role_id})")
  40.  
  41. @Options(useGeneratedKeys = true, keyProperty = "admin_id")
  42.  
  43. int insert(Map<String, Object> admin);
  44.  
  45. }

编写一个测试类测试

  1. package cn.gzsxt.test.mapper;
  2.  
  3. import java.util.Date;
  4.  
  5. import java.util.HashMap;
  6.  
  7. import java.util.Map;
  8.  
  9. import org.junit.Test;
  10.  
  11. import org.junit.runner.RunWith;
  12.  
  13. import org.springframework.beans.factory.annotation.Autowired;
  14.  
  15. import org.springframework.test.context.ContextConfiguration;
  16.  
  17. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  18.  
  19. import org.springframework.test.context.web.WebAppConfiguration;
  20.  
  21. import cn.gzsxt.config.ContextConfig;
  22.  
  23. import cn.gzsxt.config.DataConfig;
  24.  
  25. import cn.gzsxt.mapper.AdminMapper;
  26.  
  27. @RunWith(value=SpringJUnit4ClassRunner.class)
  28.  
  29. @ContextConfiguration(classes= {ContextConfig.class,DataConfig.class})
  30.  
  31. @WebAppConfiguration //声明该单元测试在SpringMVC项目里面的
  32.  
  33. public class AdminMapperTest {
  34.  
  35. @Autowired
  36.  
  37. private AdminMapper adminMapper;
  38.  
  39. @Test
  40.  
  41. public void insert() {
  42.  
  43. Map<String, Object> admin=new HashMap<String, Object>();
  44.  
  45. admin.put("admin_name", "ranger");
  46.  
  47. admin.put("admin_create_date", new Date());
  48.  
  49. adminMapper.insert(admin);
  50.  
  51. System.out.println(admin.get("admin_id"));
  52.  
  53. }
  54.  
  55. }

SpringMVC整合mybatis基于纯注解配置的更多相关文章

  1. springboot整合mybatis-plus基于纯注解实现一对一(一对多)查询

    因为目前所用mybatis-plus版本为3.1.1,感觉是个半成品,所有在实体类上的注解只能支持单表,没有一对一和一对多关系映射,且该功能还在开发中,相信mybatis-plus开发团队在不久的将来 ...

  2. Mybatis基于接口注解配置SQL映射器(一)

    上文已经讲解了基于XML配置的SQL映射器,在XML配置的基础上MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码. Mybat ...

  3. Mybatis基于接口注解配置SQL映射器(二)

    Mybatis之增强型注解 MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码.但是注解对动态SQL的支持一直差强人意,即使My ...

  4. 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置

    首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...

  5. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

  6. Maven SpringMVC整合Mybatis

    关于Spring的核心理念和Mybatis的优点网上已经有很多文档做了说明.这篇博客,只记录springmvc整合mybatis时常见的知识点,以及注意事项,它只有最精简的几个模块,以帮助初学者迅速搭 ...

  7. SpringMVC整合Mybatis的流程

    前提:如何要整合SpringMVC 与Mybatis,首先要会配置SpringMVC 第一部分:配置SpringMVC 第一步:导入jar包 第二步:构建一个请求 <%@ page langua ...

  8. eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis

    接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...

  9. Spring MVC4 纯注解配置教程

    阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目. 在传统的Spring项目中,我们要写一堆的XML文件.而这些XML文件格式要求又很严格,很不便于开发.而网上所谓的 ...

随机推荐

  1. 【将门创投】AI 往期技术分享

    计算机视觉 1. 嘉宾:商汤科技CEO 徐立 文章回顾:计算机视觉的完整链条,从成像到早期视觉再到识别理解 2. 嘉宾:格灵深瞳CTO 赵勇 文章回顾:计算机视觉在安防.交通.机器人.无人车等领域的应 ...

  2. Linux配置定时,使用 crontab -e 与 直接编辑 /etc/crontab 的区别

    转自:http://blog.csdn.net/catoop/article/details/41821395 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux配置定时任务,大家都知道 ...

  3. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

  4. 释放锁标记只有在Synchronized代码结束或者调用wait()。

    释放锁标记只有在Synchronized代码结束或者调用wait(). 注意锁标记是自己不会自动释放,必须有通知. 注意在程序中判定一个条件是否成立时要注意使用WHILE要比使用IF要严密. WHIL ...

  5. SpringBoot2.X + SpringCache + redis解决乱码问题

    环境:SpringBoot2.X + SpringCache + Redis Spring boot默认使用的是SimpleCacheConfiguration,使用ConcurrentMapCach ...

  6. 0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)

    ppp拨号使gprs上网的同时如何和gprs模块进行at指令的交互,这是一个问题. 在linux中,ppp拨号上网是内核中支持的,只需要在内核配置中选上. ppp拨号的方式使gprs进行上网与at指令 ...

  7. 【thinkphp5.1】 endroid/qrcode 二维码生成

    composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...

  8. gitlab的fork及源项目的同步

    此篇大部分貌似是cp其他地方的,也忘了出处,写到此处,权当保存,见谅. 测试代码master同步到生产代码master   #现有git@gitlab.home.com:root/fork.git项目 ...

  9. 怎么才能使服务器Nginx(或者Apache)支持字体文件

    为了在前端正确地显示字体,浏览器必须使用正确的http header来接受字体文件.如果服务器没有设置要求的头信息,那么有些浏览器就会在控制台报错或者直接不能显示. 可能你的服务器已经配置好了,你无须 ...

  10. [LeetCode] Basic Calculator IV 基本计算器之四

    Given an expression such as expression = "e + 8 - a + 5" and an evaluation map such as {&q ...