2

springMvc整合mybatis和mybatis 的dao层

 1 year ago
source link: https://blog.51cto.com/u_15555037/5791040
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

springMvc整合mybatis和mybatis 的dao层

精选 原创

ISSA2号 2022-10-24 19:22:47 博主文章分类:java ©著作权

文章标签 sql java apache 文章分类 MySQL 数据库 yyds干货盘点 阅读数193

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目录下。

springMvc整合mybatis和mybatis 的dao层_apache
配置内容
<?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很大程度上的减少了我们的代码量

  • 收藏
  • 1评论
  • 分享
  • 举报

上一篇:java主解与反射


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK