Mybatis与Spring整合

Mybatis与Spring整合

既然我们已经学了Mybatis的基本开发了,接下来就是Mybatis与Spring的整合了!

以下使用的是Oracle数据库来进行测试

导入jar包

  • aopalliance.jar
  • asm-3.3.1.jar
  • aspectjweaver.jar
  • c3p0-0.9.1.2.jar
  • cglib-2.2.2.jar
  • commons-logging.jar
  • log4j-1.2.16.jar
  • mybatis-3.1.1.jar
  • mybatis-spring-1.1.1.jar
  • mysql-connector-java-5.1.7-bin.jar
  • ojdbc5.jar
  • org.springframework.aop-3.0.5.RELEASE.jar
  • org.springframework.asm-3.0.5.RELEASE.jar
  • org.springframework.beans-3.0.5.RELEASE.jar
  • org.springframework.context-3.0.5.RELEASE.jar
  • org.springframework.core-3.0.5.RELEASE.jar
  • org.springframework.expression-3.0.5.RELEASE.jar
  • org.springframework.jdbc-3.0.5.RELEASE.jar
  • org.springframework.orm-3.0.5.RELEASE.jar
  • org.springframework.transaction-3.0.5.RELEASE.jar
  • org.springframework.web.servlet-3.0.5.RELEASE.jar
  • org.springframework.web-3.0.5.RELEASE.jar

创建表


create table emps(eid number(5) primary key,ename varchar2(20),esal number(8,2),esex varchar2(2)
);

创建实体


package entity;/*** 员工* @author AdminTC*/
public class Emp {private Integer id;private String name;private Double sal;private String sex;public Emp(){}public Emp(Integer id, String name, Double sal, String sex) {this.id = id;this.name = name;this.sal = sal;this.sex = sex;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getSal() {return sal;}public void setSal(Double sal) {this.sal = sal;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

创建实体与表的映射文件


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="empNamespace"><resultMap type="entity.Emp" id="empMap"><id property="id" column="eid"/><result property="name" column="ename"/><result property="sal" column="esal"/><result property="sex" column="esex"/></resultMap>    <!-- 增加员工 --><insert id="add" parameterType="entity.Emp">insert into emps(eid,ename,esal,esex) values(#{id},#{name},#{sal},#{sex})</insert></mapper>

创建Mybatis映射文件配置环境

数据库的信息交由Spring管理!Mybatis配置文件负责加载对应映射文件即可

<mappers><mapper resource="zhongfucheng/entity/EmpMapper.xml"/></mappers>
</configuration>

配置Spring核心过滤器【也是加载总配置文件】

<!-- 核心springmvc核心控制器 --><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>

配置数据库信息、事务


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置C3P0连接池,目的:管理数据库连接 --><bean id="comboPooledDataSourceID" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/><property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:ZHONGFUCHENG"/><property name="user" value="scott"/><property name="password" value="tiger"/></bean><!-- 配置SqlSessionFactoryBean,目的:加载mybaits配置文件和映射文件,即替代原Mybatis工具类的作用 --><bean id="sqlSessionFactoryBeanID" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:mybatis.xml"/><property name="dataSource" ref="comboPooledDataSourceID"/></bean><!-- 配置Mybatis的事务管理器,即因为Mybatis底层用的是JDBC事务管事器,所以在这里依然配置JDBC事务管理器 --><bean id="dataSourceTransactionManagerID" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="comboPooledDataSourceID"/></bean><!-- 配置事务通知,即让哪些方法需要事务支持 --><tx:advice id="tx" transaction-manager="dataSourceTransactionManagerID"><tx:attributes><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!-- 配置事务切面,即让哪些包下的类需要事务 --><aop:config><aop:pointcut id="pointcut" expression="execution(* zhongfucheng.service.*.*(..))"/><aop:advisor advice-ref="tx" pointcut-ref="pointcut"/></aop:config><!--扫描注解--><context:component-scan base-package="zhongfucheng"/></beans>

创建Dao、Service、Action


@Repository
public class EmpDao {@Autowiredprivate SqlSessionFactory sqlSessionFactory;/*** 增加员工*/public void add(Emp emp) throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();sqlSession.insert("empNamespace.add", emp);sqlSession.close();}}
@Service
public class EmpService {@Autowiredprivate zhongfucheng.dao.EmpDao empDao;public void addEmp(Emp emp) throws Exception {empDao.add(emp);}
}

@Controller
@RequestMapping("/emp")
public class EmpAction {@Autowiredprivate EmpService empService;@RequestMapping("/register")public void register(Emp emp) throws Exception {empService.addEmp(emp);System.out.println("注册成功");}}

JSP页面测试


<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>员工注册</title></head><body><form action="${pageContext.request.contextPath}/emp/register.action" method="POST"><table border="2" align="center"><tr><th>编号</th><td><input type="text" name="id"></td></tr><tr><th>姓名</th><td><input type="text" name="name"></td></tr><tr><th>薪水</th><td><input type="text" name="sal"></td></tr><tr><th>性别</th><td><input type="radio" name="sex" value="男"/>男<input type="radio" name="sex" value="女" checked/>女</td></tr><tr><td colspan="2" align="center"><input type="submit" value="注册"/></td></tr></table></form>     </body>
</html>

总结

  • web.xml加载Spring配置文件
  • Spring配置文件配置数据连接池,SessionFactory、事务、扫描注解
  • Mybatis总配置文件、实体以及相对应的映射文件
  • 将映射文件加入到总配置文件中。

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法与数据结构基础 - 堆(Heap)和优先级队列(Priority Queue)

堆基础 堆(Heap)是具有这样性质的数据结构&#xff1a;1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值&#xff1a; 图片来源&#xff1a;这里 堆可以用数组存储&#xff0c;插入、删除会触发节点shift_down、shift_up操作&#xff0c;时间复杂度O(logn)&#xff…

C++静态数据成员和静态成员函数

在C面向对象编程过程当中&#xff0c;对象与对象之间的数据不是共享&#xff0c;在设计类的时候&#xff0c;有时候需要一些对象之间共享的数据&#xff0c;除了把所要共享的数据设置为全局数据或者函数之外&#xff0c;还可以利用C的静态机制。 1、静态数据成员 class 类名 {…

带有AOP和注释的Java方法记录

有时&#xff0c;我想记录&#xff08;通过slf4j和log4j &#xff09;方法的每次执行&#xff0c;查看其接收的参数&#xff0c;返回的内容以及每次执行需要多少时间。 这是我在AspectJ &#xff0c; jcabi-aspects和Java 6注释的帮助下进行的操作&#xff1a; public class F…

JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】

什么是JDBC JDBC全称为&#xff1a;Java Data Base Connectivity,它是可以执行SQL语句的Java API 为什么我们要用JDBC 市面上有非常多的数据库&#xff0c;本来我们是需要根据不同的数据库学习不同的API&#xff0c;sun公司为了简化这个操作&#xff0c;定义了JDBC API【接口…

mysql binlog空间维护

默认情况下&#xff0c;mysql主从同步的binlog日志&#xff0c;会一直保存。 对于如果已同步好的数据&#xff0c;这显然比较浪费资源。 且如果生产环境磁盘太小&#xff0c;随时还会爆掉&#xff0c;所以很有必要作好binlog的空间维护。 以下操作&#xff0c;直接在master上操…

UVA 10604 Chemical Reaction

UVA_10604 一开始看错题了&#xff0c;以为化学物质最多会有10个&#xff0c;所以定义不了10维的去跑&#xff0c;便用了类似状态压缩的方式&#xff0c;把化学物质的状态压缩成一个整数&#xff0c;然后用哈希表建立一个索引&#xff0c;再用记忆化搜素去处理就可以了。 之所以…

一键发布到Maven Central的方法

当我向Maven Central发布Java开源库jcabi-aspects的新版本时&#xff0c;我花费了30秒钟的时间。 甚至更少。 最近&#xff0c;我发布了0.17.2版本。 您可以在Github第80期中看到所有情况&#xff1a; 如您所见&#xff0c;我向Rultor发出了命令&#xff0c;它向Maven Central…

vue组件详解(一)——组件与复用

一、什么是组件 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素&#xff0c;封装可重用的代码。 二、组件用法 组件需要注册后才可以使用&#xff0c;注册有全局注册和局部注册两种方式。 2.1 全局注册后&#xff0c;任何V ue 实例都可以使用。如&am…

fatal error LNK1120: 1 unresolved externals

出现这个错误可能原因很多&#xff0c;我的问题是来自于把template写在了cpp文件中template 有弊端 就是 他的实现部分必须和声明部分在一起 你声明在一个头文件 定义在另一个头文件 编译器好笨!!!!!!!!!,它根本就找不到 ///只要你把实现部分拷贝到你声明的头文件,就没有错…

sed命令学习

sed编辑器&#xff0c;处理文本过程如下&#xff1a; sed把当前处理的行保存在一个临时缓冲区中&#xff0c;然后处理缓冲区中的行&#xff0c;完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除&#xff0c;然后下一行读入&#xff0c;处理和显示。处理完输入…

在Spring Boot应用程序中测试邮件代码

在构建Spring Boot应用程序时&#xff0c;您可能会需要添加邮件配置。 实际上&#xff0c;在Spring Boot中配置邮件与在Spring Bootless应用程序中配置邮件没有太大区别。 但是&#xff0c;如何测试邮件配置和提交工作正常&#xff1f; 我们来看一下。 我假设我们有一个引导的…

CSS基础语法(三) CSS的6种特性

样式表常用写法及特性&#xff08;组合、继承、关联性、权值性、层叠性、重要性&#xff09; 1.样式的组合&#xff1a;把具有相同声明定义的选择符组合在一起&#xff0c;并用逗号隔开。&#xff0d;例如&#xff1a;段落元素p、单元格元素td和类c1可以使用相同样式&#xff…

卷积,DFT,FFT,图像FFT,FIR 和 IIR 的物理意义

卷积&#xff1a; 冲击信号会对线性系统产生冲击响应。 冲击信号可分解为平移度和幅度。其对线性系统的冲击响应可以分解为点点间的经平移和缩放的各个冲击响应的累加&#xff0c;通过卷积的表达式表示。 所谓的冲击响应&#xff0c;就是线性系统对任何输入信号的响应&#xff…

洛谷P2822 组合数问题

分析&#xff1a; 首先预处理出来&#xff0c;杨辉三角二维前缀和 代码&#xff1a; #include<cstdio> using namespace std; long long f[2005][2005],sum[2005][2005]; int main() {long long T,k;scanf("%lld%lld",&T,&k);for(long long i0;i<20…

es6笔记

es6对象浅复制&#xff1a; 字符串大小比较&#xff1a; 如果是汉字&#xff1a;a.charCodeAt() > b.charCodeAt() //使用carCodeAt将器转为asci码&#xff0c;在进行比较 如果是非汉字的字符串&#xff1a;直接比较或者使用上面的转码比较都可以。 如果是日期比较&#xff…

毕业设计上线啦!----跳蚤部落与基于Comet的WebIM系统开发

我不清楚把我的毕业设计的东西放上来之后&#xff0c;毕业论文答辩的时候会不会说我是在网上抄袭的&#xff0c;不过我还是果断的发上来与大家分享了&#xff01;&#xff01;呵呵&#xff0c;请大家支持&#xff01;高手就绕道吧&#xff01; 现在已经放到公网上&#xff0c;并…

poj2032Square Carpets(IDA* + dancing links)

题目请戳这里 题目大意:给一个H行W列的01矩阵,求最少用多少个正方形框住所有的1. 题目分析:又是一个红果果的重复覆盖模型.DLX搞之! 枚举矩阵所有的子正方形,全1的话建图.判断全1的时候,用了一个递推,dp[i][j][w][h]表示左上角(i,j)的位置开始长h宽w的矩形中1的个数,这样后面可…

使用Spring Security保护REST服务

总览 最近&#xff0c;我正在一个使用REST服务层与客户端应用程序&#xff08;GWT应用程序&#xff09;进行通信的项目中。 因此&#xff0c;我花了很多时间来弄清楚如何使用Spring Security保护REST服务。 本文介绍了我找到的解决方案&#xff0c;并已实现。 我希望此解决方案…

http请求post,返回excel文件,并接收

1.post的方法里要加responseType: arraybuffer参数&#xff0c;不然下载的excel会乱码 2.使用{type: "application/vnd.ms-excel"}的写法&#xff0c;可以保存为xls格式的excel文件&#xff08;兼容老版本&#xff09;。而使用“application/vnd.openxmlformats-off…

linux图形开发工具

请见:http://hi.baidu.com/jjzhang166/blog/item/b8dfb6ecd5fc6e2d62d09f9e.html 转载于:https://www.cnblogs.com/vilyLei/archive/2011/12/12/2284869.html