为了更方便的连接数据库,将mybatis配置到springMVC中

1).  首先是jar包    多了3个jar  druid 这个是阿里的数据库连接包      mybatis和 mybatis-spring

2)  然后是项目目录

3)在web.xml中 加上一个spring的配置文件

<context-param></context-param>元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web应用中必须是惟一的。设定web应用的环境参数(context)

4)

spring-mvc的内容不变,spring-mybatis中的内容如下

<!-- MyBatis配置 这个就是spring和mybatis的整合 也就是spring-mybatis jar-->
<bean id="mysqlSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--数据库 多数据源配置多个-->
<property name="dataSource" ref="mysqlDataSource" />
<!-- 自动扫描mapping.xml文件 -->

<!-- 自动扫描entity目录, 省掉xml里的手工配置
该属性可以给包中的类注册别名,注册后可以直接使用类名,而不用使用全限定的类名-->
<property name="typeAliasesPackage" value="com.springmvc.model" />
<!-- mysqlSqlSessionFactory会自动扫描该路径下的所有文件并解析。-->
<property name="mapperLocations">
<list>
<value>classpath:/mybatis/*Mapper.xml</value>
</list>
</property>
</bean>

<!--会查找类路径下的映射器并自动将它们创建成MapperFactoryBean  -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="mysqlSqlSessionFactory"></property>

<!-- 为映射器接口文件设置基本的包路径 -->
<property name="basePackage" value="com.springmvc.dao" />
<!-- 该属性起到一个过滤的作用,设置该属性,那么mybatis的dao接口 只有包含该注解 才会被扫描-->
<property name="annotationClass" value="com.springmvc.base.JYBatis"/>
</bean>

5) 自定义的JYBatis

/**
* 标识MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描�??
*
* 总的来说就是 target(接口) retention(java-class后依旧可用) document(包含在javadoc中) component(spring扫描)
*/
@Retention(RetentionPolicy.RUNTIME) //注解的生命周期 这个是最长的 jvm加载class文件之后,仍然存在
@Target(ElementType.TYPE) //注解修改目标 (这是个接口) 接口、类、枚举、注解
@Documented //该注解将被包含在javadoc中
@Component //@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
public @interface JYBatis {
  String value() default "";
}

6) 数据库连接参数 (这个根据自己本地的库的名字和端口 来自己写)

db.username=root
db.password=123456
db.url=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8
db.dirverClass=com.mysql.jdbc.Driver

这样mybatis就整合到springmvc中了,下面做一个例子,往mysql中插入一条数据

1) 首先是jsp页面

还在login.jsp中写一个form

<form action="spring/student/testController" method="post">
  <br />用户名: <input type="text" name="name"> <br />

  <br />年龄: <input type="text" name="age"> <br />

  <br /> 老师: <input type="text" name="teacher">
  <br />  <input type="submit" value="登录">
</form>

2) model类    然后写一个Student model类

//Alias是mybatis给当前model类起的别名 typeAlias
@Alias("Student")
public class Student {
private int id;
private String name;
private int age;
private String teacher;

3)StudentController类

@Controller
@RequestMapping("/spring/student")
public class StudentController {
@Resource
private StudentService ss;

@RequestMapping(value="/testController")
public String toPage(Student s){
System.out.println(s.toString());
s.setId(33);
ss.save(s);
return "success";
}

}

4) StudentService    StudentServiceImpl  StudentDao

public interface StudentService {

public void save(Student student);
}

//StudentServiceImpl 这里要加上注解

@Service("StudentService") 
public class StudentServiceImpl implements StudentService {

@Autowired
private StudentDao studentDao;

@Override
public void save(Student student) {
studentDao.insert(student);
}

StudentDao  要加上自定义注解  这里spring会自动为其创建bean

@JYBatis
public interface StudentDao {

public void insert(Student student);

}

5)  最后是mybatis的xml文件 StudentMapper.xml

<?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="com.springmvc.dao.StudentDao">
<!-- com.jy.entity.system.account.Account -->
<!-- com.jy.entity.oa.leave.Leave -->
<resultMap id="base" type="Student" > </resultMap>

<select id="find" resultMap="base" parameterType="Student">
  SELECT t.* FROM user1 t WHERE 1=1
<if test="id != null and id!='' ">
  AND t.id=#{id}
</if>
</select>

<select id="count" resultType="int" parameterType="Student">
  SELECT count(*) FROM user1 t WHERE 1=1
</select>
<insert id="insert" parameterType="Student">
<![CDATA[
INSERT INTO user1(
  id,
  age,
  name,
  teacher
  ) VALUES (
  #{id},
  #{age},
  #{name},
  #{teacher}
  )
]]>
</insert>

<update id="updateUserAssetInfo" parameterType="Map">
  UPDATE user1
  SET
  id=#{id},
  age=#{age},
  name=#{name},
  teacher=#{teacher}
  WHERE id=#{id}
</update>

</mapper>

2 将mybatis配置到springmvc中的更多相关文章

  1. Mybatis配置映射文件中parameterType的用法小结

    原创: 在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配 ...

  2. SpringMVC中数据转换

    SpringMVC中接收到的数据都是String形式,然后再根据反射机制将String转换成对应的类型.如果此时想接收一个Date类型,那么我们可以定义一个转换器来完成. 例如,我们有下面的Emp类: ...

  3. 使用IDEA配置Maven + SpringMVC + Mybatis 【一步一步踩坑详细配置完成】

    PS:初学,想使用Maven配置一个SpringMVC的开发环境,照着网上的各种图文解说,配置了好久都没成功,有些写的不够详细,有些只有写一半,走了不少弯弯绕绕,踩了不少的坑,此文将正确配置成功的步骤 ...

  4. Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 怎样打开依赖视图

    Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 配置原则: 利用依赖,将所需的jar包加载到project中. 先依赖主要jar包 Spring + Spring ...

  5. SSM框架的配置Spring+Springmvc +Mybatis

    ssm框架是由spring mvc +spring+mybatis组成 快速阅读 通过spring的配置文件spring.xml,在servlet中指定spring mvc的配置文件spring-mv ...

  6. 第五节 关于SpringMVC中Ajax的配置和应用[下午]

    成熟,不是学会表达,而是学会咽下,当你一点一点学会克制住很多东西,才能驾驭好人生. 还有一周,祥云19就算结算了,一个半月的相处希望,胖先生算一个合格的老师 小白,小蔡,2婷婷,小猴,小恒,小崔,小龙 ...

  7. Springmvc中配置Quartz使用,实现任务实时调度。

    菜鸡的自我修炼,第一次接触quartz,做个记录.-------jstarseven 最近在项目中,第一次在springmvc中配置实用quartz,深刻的感受到quartz带来的方便,顺手做个记录. ...

  8. JavaEE开发之SpringMVC中的路由配置及参数传递详解

    在之前我们使用Swift的Perfect框架来开发服务端程序时,聊到了Perfect中的路由配置.而在SpringMVC中的路由配置与其也是大同小异的.说到路由,其实就是将URL映射到Java的具体类 ...

  9. Maven-SSM项目pom.xml配置以及springmvc配置以及mybatis配置及web.xml配置

    一.Maven本地仓库的pom.xml配置 (全部是mysql数据库) <project xmlns="http://maven.apache.org/POM/4.0.0" ...

随机推荐

  1. Android开发更新UI的几种方式

    1.runOnUiThread 2.handler post 3.handler sendmessage 4.view post xml布局文件: <RelativeLayout xmlns:a ...

  2. Intellij idea史上最简单的教程之Linux下安装与破解Intellij idea2017

    一.前言 这一节我们介绍在Linux下如何安装与破解Intellij idea2017.现在有很多公司开发环境都是Linux,所以掌握在Linux环境下使用Idea办公也是咱们必须得掌握的技能. 记住 ...

  3. Python二维数据分析

    一.numpy二维数组 1.声明 import numpy as np #每一个[]代表一行 ridership = np.array([ [ 0, 0, 2, 5, 0], [1478, 3877, ...

  4. Vue与swiper想结合封装全屏轮播插件

    项目需求介绍: 1.页面图文混排, 2.点击图片后全屏展示图片,并在底部显示文字,如果没有则不显示 3.关闭全屏后依然停留在上次浏览的位置 4.浏览图片时,不管点击的哪张图片,全屏展示的时候也要显示这 ...

  5. 剖析Prometheus的内部存储机制

    Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT). 接下来让我们看看他 ...

  6. JQuery-基础学习1

    1)JQuery语法 jquery语法是为HTML元素的选取编制,可以对元素执行某些操作. 基础语法是:$(selector).action() 美元符号定义JQuery 选择符(selector)& ...

  7. Java规范推荐

    Java规范推荐 推荐:http://blog.csdn.net/tristansmile/article/details/7989670 命名规范 项目名:全部小写 Package 的命名:应该都是 ...

  8. LeetCode 119. Pascal's Triangle II (杨辉三角之二)

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  9. 初识Http协议抓包工具—Fiddler

    1.Fiddler简介 Fiddler是用一款使用C#编写的http协议调试代理工具.它支持众多的http调试任务,能够记录并检查所有你的电脑和互联网之间的http通讯,可以设置断点,查看所有的“进出 ...

  10. 为什么C++没有对应realloc的new操作符呢?

    http://blog.csdn.net/rabbit729/article/details/3400260 这个用memcpy明显是有问题的.如果类有资源分配的话,直接memcpy不能复制资源,会导 ...