第一部分:配置 Spring 框架

  配置 SpringMVC 的步骤:

  配置流程图:

  SpringMVC 配置

  1. 导入包(那些包,基本包 5 个,1 个日志依赖包,2 个 webmvc 支持包)

<!-- jsp -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency> <!-- spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.16.RELEASE</version>
</dependency>

  2.  构建一个请求

<form action="${pageContext.request.contextPath }/admin/addAdmin" method="post">
管理员名称:<input name="admin_name" type="text"><input type="submit" value="增加管理员">
</form>

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd ">
<!-- 编码支持过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定配置类的位置,指定包名会加载该包下的所有配置类 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>cn.mgy.config</param-value>
</init-param>
<!-- 修改支持配置类的Spring容器 -->
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

  4. 编写业务控制器

package cn.mgy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.annotation.SessionScope; @Controller
@SessionScope
@RequestMapping(value="/admin")
public class AdminController { @RequestMapping(value="/addAdmin")
public String addAdmin() {
System.out.println("-增加管理员-");
return "/add.jsp";
} }

  5. 编写配置类

  -- 容器配置类

@Configuration
@ComponentScan(basePackages="cn.gzsxt")
public class ContextConfig { }

  --SpringMVC 配置类

package cn.mgy.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration
@EnableWebMvc //<mvc:annotation-driver>
public class MvcConfig extends WebMvcConfigurerAdapter { //<mvc:default-servlet-handler>,放开静态资源访问
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}

  6. 编写返回的页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>增加学生成功的界面</title>
</head>
<body>
<h3>增加学生成功</h3>
</body>
</html>

第二部分:配置 Mybatis 框架

  Mybatis 配置流程图:

  配置步骤说明:

  1. 导入包(JDBC 驱动包,Mybatis 框架包,junit)

<!-- mybatis -->

        <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- mysql --> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

  2. 创建一个总配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >
<configuration> <environments default="rbac">
<environment id="rbac">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="org.gjt.mm.mysql.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/rbac" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> </configuration>

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

package cn.mgy.utils;

import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisUtils { public static final SqlSessionFactory SESSION_FACTORY=MybatisUtils.createSqlSessionFactory(); private static SqlSessionFactory createSqlSessionFactory() { try {
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//创建会话工厂构建类对象
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//返回会话工厂
return builder.build(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} public static SqlSession getSqlSession() {
return SESSION_FACTORY.openSession();
} public static void main(String[] args) {
System.out.println(MybatisUtils.getSqlSession());
} }

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

package cn.mgy.mapper;

import java.util.Map;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options; /**
* 管理员映射接口,用于操作tb_admin表
*
* @author ranger
*
*/
public interface AdminMapper { /**
* 增加管理员记录
*
* @param admin
* @return
*/
@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})")
@Options(useGeneratedKeys = true, keyProperty = "admin_id")
int insert(Map<String, Object> admin); }

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >
<configuration> <environments default="rbac">
<environment id="rbac">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="org.gjt.mm.mysql.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/rbac" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> <mappers>
<mapper class="cn.mgy.mapper.AdminMapper"/>
</mappers> </configuration>

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

package cn.mgy.test.mapper;

import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import cn.mgy.mapper.AdminMapper;
import cn.mgy.utils.MybatisUtils; public class AdminMapperTest { @Test
public void insert() {
SqlSession session = MybatisUtils.getSqlSession();
AdminMapper adminMapper = session.getMapper(AdminMapper.class);
Map<String, Object> admin=new HashMap<String, Object>();
admin.put("admin_name", "admin");
admin.put("admin_create_date", new Date());
adminMapper.insert(admin);
System.out.println(admin.get("admin_id"));
session.commit();
session.close(); } }

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

  配置步骤:

  1. 导入包(那些包)

    (1)Mybatis-Spring 整合包

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

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

<!-- mybatis-spring -->

        <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- spring jdbc --> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.16.RELEASE</version>
</dependency> <!-- dbcp2 --> <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.2.0</version>
</dependency> <!-- spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.16.RELEASE</version>
<scope>test</scope>
</dependency>

  2. 创建数据源

@Value("${db.driverClassName}")
private String driverClassName;
@Value("${db.url}")
private String url;
@Value("${db.username}")
private String username;
@Value("${db.password}")
private String password; //第一步:创建一个数据源
@Bean
public DataSource getDataSource() {
BasicDataSource dataSource=new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}

  3. 创建支持 Spring 数据源的会话工厂

//第二步:获得会话工厂
@Bean(name="sqlSessionFactory")
public SqlSessionFactory getSessionFactory() {
SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
//指定使用的数据源
factoryBean.setDataSource(this.getDataSource());
try {
factoryBean.afterPropertiesSet();
return factoryBean.getObject();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

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

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

  5. 配置事务代理

@EnableTransactionManagement //<tx:annotation-driver>   // ②

    //第四步:配置事务代理
@Bean // ①
public DataSourceTransactionManager getDataSourceTransactionManager() {
DataSourceTransactionManager dstm=new DataSourceTransactionManager();
//指定需要事务代理的数据源
dstm.setDataSource(this.getDataSource());
return dstm;
}

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

  7. 修改映射接口增加 @Mapper 注解

package cn.mgy.mapper;

import java.util.Map;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options; /**
* 管理员映射接口,用于操作tb_admin表
*
* @author ranger
*
*/
@Mapper //增加扫描注解!!!
public interface AdminMapper { /**
* 增加管理员记录
*
* @param admin
* @return
*/
@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})")
@Options(useGeneratedKeys = true, keyProperty = "admin_id")
int insert(Map<String, Object> admin); }

  8. 编写一个测试类测试

package cn.mgy.test.mapper;

import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration; import cn.mgy.config.ContextConfig;
import cn.mgy.config.DataConfig;
import cn.mgy.mapper.AdminMapper; @RunWith(value=SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes= {ContextConfig.class,DataConfig.class})
@WebAppConfiguration //声明该单元测试在SpringMVC项目里面的
public class AdminMapperTest { @Autowired
private AdminMapper adminMapper; @Test
public void insert() {
Map<String, Object> admin=new HashMap<String, Object>();
admin.put("admin_name", "ranger");
admin.put("admin_create_date", new Date());
adminMapper.insert(admin);
System.out.println(admin.get("admin_id")); } }

  

  

终极版:Mybatis整合Spring配置的更多相关文章

  1. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  2. Spring MVC、MyBatis整合文件配置详解

    Spring:http://spring.io/docs MyBatis:http://mybatis.github.io/mybatis-3/ Building a RESTful Web Serv ...

  3. 不需要怎么修改配置的Mybatis整合Spring要点

    首先对于Mybatis的主配置文件,只需要修改一处地方,将事务交给Spring管理,其它地方可以原封不动. <?xml version="1.0" encoding=&quo ...

  4. mybatis整合spring 之 基于接口映射的多对一关系

    转载自:http://my.oschina.net/huangcongmin12/blog/83731 mybatis整合spring 之  基于接口映射的多对一关系. 项目用到俩个表,即studen ...

  5. mybatis整合spring获取配置文件信息出错

    描述:mybatis整合spring加载jdbc.properties文件,然后使用里面配置的值来 配置数据源,后来发现用户变成了admin- jdbc.properties的配置: 加载配置: 报错 ...

  6. JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程

    1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...

  7. 学习笔记_J2EE_SSM_01_spring+springMVC+Mybatis整合_XML配置示例

    spring+springMVC+Mybatis整合_XML配置示例 1.概述 spring+springMVC+Mybatis整合  XML配置方式 1.1 测试环境说明 名称 版本 备注 操作系统 ...

  8. Mybatis整合Spring -- typeAliasesPackage

    Mybatis整合Spring 根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持. 因此由M ...

  9. 160330、Mybatis整合Spring

    转自csdn文章 http://haohaoxuexi.iteye.com/blog/1843309 Mybatis整合Spring 根据官方的说法,在ibatis3,也就是Mybatis3问世之前, ...

随机推荐

  1. Spring Boot 2.x 编写 RESTful API (三) 程序层次 & 数据传输

    用Spring Boot编写RESTful API 学习笔记 程序的层次结构 相邻层级的数据传输 JavaBean 有一个 public 的无参构造方法 属性 private,且可以通过 get.se ...

  2. Allow Only Ajax Requests For An Action In ASP.NET Core

    ASP.NET Core offers attributes such as [HttpGet] and [HttpPost] that allow you to restrict the HTTP ...

  3. anaconda相关使用方法

    本文不涉及anaconda的安装,如果需要请自行搜索,cnblogs和CSDN都挺多的. conda安装完,大部分人都jupyter notebook的使用需求,jupyter的开启命令是什么呢? j ...

  4. WC2019冬眠记

    Day0 报道日就当做Day0吧. 上午起床比较晚,起来就开始整理东西准备搬到广二的高中部去,搬了两趟,因为没吃早饭,头就很晕,吓得我赶快把之前发的士力架给吃了. 上午李姐姐和我们聊了聊\(THUWC ...

  5. VimFaultException A specified parameter was not correct configSpec.guestId

    VimFaultException A specified parameter was not correct configSpec.guestId 在对接VMware的环境中创建虚拟机报错 查看错误 ...

  6. 【洛谷P1402】酒店之王

    题目大意:有三个集合 \(P,Q,N\),P 与 N 集合之间存在一些有向边,N 与 Q 集合之间存在一些有向边.在三个集合中每个点最多只能利用一次的前提下,求最多能利用多少N 集合中的点,使得 \( ...

  7. Java第五周学习总结

    学号 2016-2017-2 <Java程序设计>第X周学习总结 教材学习内容总结 1.接口 (1)使用关键字interface来定义一个接口,接口分为接口声明和接口体,例如 interf ...

  8. laravel安装nova 运行php artisan migrate出错

    报错一$ php artisan migrate Illuminate\Database\QueryException : could not find driver (SQL: select * f ...

  9. 关于java环境变量配置出现javac命令无法运行的解决办法

    昨天一时兴起给电脑刷了机,想着给电脑装个Win10+Linux的双系统, 结果双系统没装好,所有的东西又得重新弄一遍 今天在配置java的时候又出问题了 java,java-version运行成功了, ...

  10. 在线批量修改mysql中表结构

    在线批量修改mysql中表结构 1.获取要修改的表的表名称登录mysql库,查询出所有表 show tables; 将需要修改表结构的表名称存放到b.txt文件中2.执行修改修改表引擎为InnoDB ...