首页 > 其他分享 >springMvc整合mybatis和mybatis 的dao层

springMvc整合mybatis和mybatis 的dao层

时间:2022-10-24 19:33:30浏览次数:43  
标签:springMvc dao 接口 import mybatis org SqlSessionFactoryBuilder

springMvc整合mybatis

1.1 pom注入依赖
<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <!--这个是日志文件,用来优化mybatis的-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
      <!-- junit是用来测试dao层的-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
1.2 配置mybatis_config.xml文件

  这个文件要配置在resources目录下。 配置内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true" />
        <!--是否开启积极懒加载,false 按需加载 ,默认是true-->

        <setting name="aggressiveLazyLoading" value="false" />

        <!--开启二级缓存 总开关-->
        <setting name="cacheEnabled" value="true" />
    </settings>

    <typeAliases>
        <!-- <typeAlias type="net.seehope.mybatis.pojo.User" alias="user" /> -->
        <!--批量别名 首字母大小写都行-->
        <package name="net.seehope.mybatis.pojo" />
    </typeAliases>
    
    <environments default="development">
        <environment id="development">
            <!--配置JDBC事务控制,由mybatis 管理-->
            <transactionManager type="JDBC"/>
            <!--默认使用dbcp连接池-->
            <!--这儿value要使用自己的数据库,我这里是使用了配置文件-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
        <!-- <environment id="development1">
            配置JDBC事务控制,由mybatis 管理
            <transactionManager type="JDBC"></transactionManager>
            默认使用dbcp连接池
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/spring_jdbc" />
                <property name="username" value="root" />
                <property name="password" value="qhxj,YRAN941211" />
            </dataSource>
        </environment>
 -->
    </environments>
</configuration>

mybatis 的dao层

1.1 dao层

  dao层就是使用Sql语句,或者就是拼接sql语句操作数据库,但在spring框架中我们可以通过dao层映射的操作去省去传统Jdbc的一些步骤,像dao层的实例使用。

1.2 实现

mybatis对于dao层的实现,采用了一种代理开发模式,我们可以通过自己编写的Mapper接口 (以前的dao接口),然后mybatis可以通过接口去创建相应动态代理对象,在代理对象上实现相应的方法。

   首先我们要创建对应的接口,例如这里我创建一个userMapper接口

public interface UserMapper {
//这个接口中有一个添加用户的方法,也可以写多个。
    int addUser();
}

   然后我们要去配置相应的配置文件在resources目录下。基本样式如下

<?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">
<!-- namespace:此时用mapper代理方式,它的值必须等于对应mapper接口的全限定名  -->
<!--namespace的名字就是java目录后一级,mapper里面写相应的sql语句-->
<mapper namespace="com.example.ktp.mapper.UserMapper">
     <!--语句的id指向接口中的方法名-->
     <insert id="addUser">
         insert into ktp_user(name,password) values ("ss","ssssss");
     </insert>
     <!--select语句必须要有返回类型,resultType 或 resultMap-->
     <select id="selectByIdUser" resultType="UserMapper">
        
    </select>
</mapper>

   这样我们就写好了一个基础的dao,但如何去检验呢,就需要junit

1.3 测试

   测试文件我们要写在test目录下,我们通过加载配置文件,和去创建一个虚拟的测试实类. 例如:

import com.example.ktp.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class test_user_mapper {
  @Test
 public void testUser() throws IOException {
       InputStream is= Resources.getResourceAsStream("mybatis_config.xml");
       //通过SqlSessionFactoryBuilder去构建SqlSessionFactory
      SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
      //再通过SqlSessionFactory和配置文件去构建SqlSession
      SqlSessionFactory sqlSessionFactory=builder.build(is);
       //Sqlsession文件充当java程序和数据库的桥梁
      SqlSession sqlSession=sqlSessionFactory.openSession(true);
      //Sqlsession文件通过接口的class文件去创建类
      UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
      //使用这个方法,返回为1,则成功了
      int t=userMapper.addUser();
      System.out.println("Result: "+t);
  }
}

总而言之,mybatis很大程度上的减少了我们的代码量

标签:springMvc,dao,接口,import,mybatis,org,SqlSessionFactoryBuilder
From: https://blog.51cto.com/u_15555037/5791040

相关文章

  • SpringMVC 配置
    1.webinitpackagecom.cj.config;importorg.springframework.web.context.WebApplicationContext;importorg.springframework.web.filter.CharacterEncodingFilter;......
  • 【转】MyBatis 通过Map更新
     原文:mybatis使用map批量更新(Oracle)有个需求,MyBatis通过Map的key作为条件,value作为更新后的值来更新数据。 <updateid="batchUpdateLogistics"parameterType="m......
  • mybatis 四大组件
     一、Mybatis四大组件二、SqlSession四大对象这里阐述一下上图的流程Exeutor发起sql执行任务1、先调用statementHandler中的prepare()进行SQL的编译2、然后调用st......
  • MyBatisSystemException 【exception】
    org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.type.TypeException:Couldnotsetparametersformapping:ParameterMapping{prop......
  • 【SpringMvc】IDEA maven使用tomcat7插件启动报错:A child container failed during s
    【爱迪的懂】原文......
  • 聊聊 MyBatis 缓存
    聊聊MyBatis缓存首发公众号-悟空聊架构:图解|聊聊MyBatis缓存你好,我是悟空。本文主要内容如下:一、MyBatis缓存中的常用概念MyBatis缓存:它用来优化SQL数据......
  • 集成mybatis批量update问题
    <!--多条语句批量更新用的是拼接批量执行的方法--><updateid="updateDemo"><foreachcollection="list"item="item"index="index"open=""close=""separa......
  • MyBatisPlus
    一、MyBatisPlus简介概念MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率。开发方式基于MyBatis使用MyBatisPlus基于Spring使......
  • SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置
    SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置目录:方式一:放在与Mapper接口同级目录方式二:在resources创建Mapper接口同名文件夹用来存放Mapper.xml文件方式三:......
  • SpringMVC框架详解
    简述SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring FrameWork的后续产品,已经融合在SpringWebFlow里面。Spring......