Mybatis整合Spring配置

第一部分:配置Spring框架

配置SpringMVC的步骤

配置流程图

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

<!-- 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>
  1. 构建一个请求
  <form action="${pageContext.request.contextPath }/admin/addAdmin" method="post">

       管理员名称:<input name="admin_name" type="text"><input type="submit" value="增加管理员">

   </form>

编辑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.gzsxt.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>

编写业务控制器

package cn.gzsxt.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 "/addAdmin.jsp";

}

}

编写配置类


@Configuration

@ComponentScan(basePackages="cn.gzsxt")

public class ContextConfig {

}

--容器配置类

package cn.gzsxt.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();

}

}

--SpringMVC配置类

  1. 编写返回的页面

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

第二部分:配置Mybatis框架

Mybatis配置流程图

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

<!-- 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>

创建一个总配置文件

<?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-1227" />

<property name="username" value="root" />

<property name="password" value="123456" />

</dataSource>

</environment>

</environments>

</configuration>

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

package cn.gzsxt.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());

}

}

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

package cn.gzsxt.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);

}

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

<?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-1227" />

<property name="username" value="root" />

<property name="password" value="123456" />

</dataSource>

</environment>

</environments>

<mappers>

  <mapper class="cn.gzsxt.mapper.AdminMapper"/>

</mappers>

</configuration>

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

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

配置步骤:

  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>

创建数据源

@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;

}
  1. 创建支持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;

}

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

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

@MapperScan(basePackages="cn.gzsxt.mapper",annotationClass=Mapper.class)

配置事务代理

@EnableTransactionManagement //<tx:annotation-driver>

//第四步:配置事务代理

@Bean

public DataSourceTransactionManager getDataSourceTransactionManager() {

DataSourceTransactionManager dstm=new DataSourceTransactionManager();

//指定需要事务代理的数据源

dstm.setDataSource(this.getDataSource());

return dstm;

}

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

  1. 修改映射接口增加@Mapper注解
package cn.gzsxt.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);

}

编写一个测试类测试

package cn.gzsxt.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.gzsxt.config.ContextConfig;

import cn.gzsxt.config.DataConfig;

import cn.gzsxt.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"));

}

}

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. Django Http请求生命周期

    day54 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中的的url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 4.业务处理 URL----&g ...

  2. 设置GRUB密码以防止单用户模式下root密码被恶意更改

    在使用LInux系统的时候可能会发生忘记root密码的情况,通常管理员会进入单用户模式下进行重置root密码.那么问题来了,既然管理员可以进入单用户模式,如果恶意用户可以接触的到计算机的话毫无疑问也是 ...

  3. Replication基础(六) 复制中的三个线程(IO/SQL/Dump)

    Reference:  https://blog.csdn.net/sun_ashe/article/details/82181811?utm_source=blogxgwz1 简介在MySQL复制技 ...

  4. C语言 · 组合数

    组合数 从4个人中选2个人参加活动,一共有6种选法. 从n个人中选m个人参加活动,一共有多少种选法?下面的函数实现了这个功能. 请仔细分析代码,填写缺少的部分(下划线部分). 注意:请把填空的答案(仅 ...

  5. GRE封装解封装过程

    GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(IPX, AppleTalk, IP,etc.)的数据报文进行封装,使这些被封装的数据报文能够 ...

  6. c++中为什么可以通过指针或引用实现多态,而不可以通过对象呢?

    引言:  在c++中司空见惯的事情就是:可以通过指针和引用可以实现多态,而对象不可以.  那为什么?让我们来解开这神秘的暗纱! 1. 类对象的存储方式: 在一个类的实例中,只会存放非静态的成员变量. ...

  7. 阿里巴巴Java开发手册及Java代码规约扫描eclipse和IDEA插件

    <阿里巴巴Java开发手册>: https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B ...

  8. 使用 Postman 取得 Token 打另一隻 API

    使用 Postman 取得 Token 打另一隻 API Spring MVC token 统一校验和user 信息自动获取 使用token和SpringMVC来实现安全的RESTFul接口 spri ...

  9. [springBoot系列]--springBoot注解大全[转]

    一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...

  10. 新版的 Springsecurity request.getRequestDispatcher).forward(request, response); 404 问题,已解决

    旧版本的 可以直接 转发登陆 request.getRequestDispatcher).forward(request, response); 新版本的转发会404,原因 SpringSecurit ...