SpringMVC整合mybatis基于纯注解配置
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>
- 构建一个请求
- <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配置类
- 编写返回的页面
《返回到请求页面就可以了》
第二部分:配置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)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;
- }
- 创建支持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管理了。所以不需要原来的配置文件以及帮助类了!!
- 修改映射接口增加@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基于纯注解配置的更多相关文章
- springboot整合mybatis-plus基于纯注解实现一对一(一对多)查询
因为目前所用mybatis-plus版本为3.1.1,感觉是个半成品,所有在实体类上的注解只能支持单表,没有一对一和一对多关系映射,且该功能还在开发中,相信mybatis-plus开发团队在不久的将来 ...
- Mybatis基于接口注解配置SQL映射器(一)
上文已经讲解了基于XML配置的SQL映射器,在XML配置的基础上MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码. Mybat ...
- Mybatis基于接口注解配置SQL映射器(二)
Mybatis之增强型注解 MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码.但是注解对动态SQL的支持一直差强人意,即使My ...
- 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置
首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...
- JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别
1. 学习计划 第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...
- Maven SpringMVC整合Mybatis
关于Spring的核心理念和Mybatis的优点网上已经有很多文档做了说明.这篇博客,只记录springmvc整合mybatis时常见的知识点,以及注意事项,它只有最精简的几个模块,以帮助初学者迅速搭 ...
- SpringMVC整合Mybatis的流程
前提:如何要整合SpringMVC 与Mybatis,首先要会配置SpringMVC 第一部分:配置SpringMVC 第一步:导入jar包 第二步:构建一个请求 <%@ page langua ...
- eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...
- Spring MVC4 纯注解配置教程
阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目. 在传统的Spring项目中,我们要写一堆的XML文件.而这些XML文件格式要求又很严格,很不便于开发.而网上所谓的 ...
随机推荐
- 【将门创投】AI 往期技术分享
计算机视觉 1. 嘉宾:商汤科技CEO 徐立 文章回顾:计算机视觉的完整链条,从成像到早期视觉再到识别理解 2. 嘉宾:格灵深瞳CTO 赵勇 文章回顾:计算机视觉在安防.交通.机器人.无人车等领域的应 ...
- Linux配置定时,使用 crontab -e 与 直接编辑 /etc/crontab 的区别
转自:http://blog.csdn.net/catoop/article/details/41821395 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux配置定时任务,大家都知道 ...
- 基于μC/OS—III的CC1120驱动程序设计
基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120 嵌入式操作系统 STM32F103ZE ...
- 释放锁标记只有在Synchronized代码结束或者调用wait()。
释放锁标记只有在Synchronized代码结束或者调用wait(). 注意锁标记是自己不会自动释放,必须有通知. 注意在程序中判定一个条件是否成立时要注意使用WHILE要比使用IF要严密. WHIL ...
- SpringBoot2.X + SpringCache + redis解决乱码问题
环境:SpringBoot2.X + SpringCache + Redis Spring boot默认使用的是SimpleCacheConfiguration,使用ConcurrentMapCach ...
- 0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)
ppp拨号使gprs上网的同时如何和gprs模块进行at指令的交互,这是一个问题. 在linux中,ppp拨号上网是内核中支持的,只需要在内核配置中选上. ppp拨号的方式使gprs进行上网与at指令 ...
- 【thinkphp5.1】 endroid/qrcode 二维码生成
composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...
- gitlab的fork及源项目的同步
此篇大部分貌似是cp其他地方的,也忘了出处,写到此处,权当保存,见谅. 测试代码master同步到生产代码master #现有git@gitlab.home.com:root/fork.git项目 ...
- 怎么才能使服务器Nginx(或者Apache)支持字体文件
为了在前端正确地显示字体,浏览器必须使用正确的http header来接受字体文件.如果服务器没有设置要求的头信息,那么有些浏览器就会在控制台报错或者直接不能显示. 可能你的服务器已经配置好了,你无须 ...
- [LeetCode] Basic Calculator IV 基本计算器之四
Given an expression such as expression = "e + 8 - a + 5" and an evaluation map such as {&q ...