ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis 02: 添加并简单使用mybatis

2022-08-08 17:30:08  阅读:541  来源: 互联网

标签:02 name age 添加 mybatis import com email


三层架构

  • 项目开发时,遵循的一种设计模式,分为三层

    • 界面层:用来接收客户端输入的数据,调用业务逻辑层进行功能处理,返回结果给客户端
      • 过去的servlet就完成了界面层的功能(但是他做的更多)
    • 业务逻辑层:用来进行整个项目的业务逻辑处理,向上为界面层提供处理结果,向下问数据访问层要数据
    • 数据访问层:专门用来进行数据库的增删改查操作,向上为业务逻辑层提供数据
  • 各层之间的调用顺序是固定的,不允许跨层访问

    • 界面层 < ----- > 业务逻辑层 < ----- > 数据访问层
  • 图示

image

常用的框架

  • 什么是框架

    • 框架是一个半成品软件,将所有的公共的,重复的功能解决掉,帮助程序员快速高效的进行项目开发
      • 可复用,可扩展
  • SSM框架

    • Spring:它是整合其他框架的框架,他的核心是IOC和AOP,由20多个模块组成,在很多领域都提供了很好的问题解决方案
    • SpringMVC:它是Spring家族的一员,专门用来优化控制器(servlet),提供了极简的数据提交,数据携带,页面跳转等功能
    • MyBatis:它是一个持久化层的框架,用来进行数据库访问的优化,专注于sql语句,极大的简化了jdbc的访问

MyBatis框架

简介

mybatis框架本是apache基金会的一个开源项目,原名:ibatis

2010年这个项目由apache software foundation迁移到了google code,并改名为mybatis

2013年11月迁移到github上

MyBatis执行逻辑图

image

添加并简单使用MyBatis框架

总体步骤:添加依赖 + 添加配置文件

具体步骤

  • 新建数据库,数据表,插入测试数据

    • student.sql的脚本示例
    CREATE DATABASE ssm DEFAULT CHARSET utf8;
    
    use ssm;
    
    CREATE TABLE `student` (
    `id` int(11)  AUTO_INCREMENT primary key ,
    `name` varchar(255) DEFAULT NULL,
    `email` varchar(255) DEFAULT NULL,
    `age` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    insert into student(name,email,age) values('zhansan','zhangsan@126.com',22);
    insert into student(name,email,age) values('lisi','lisi@126.com',21);
    insert into student(name,email,age) values('wangwu','wangwu@163.com',22);
    insert into student(name,email,age) values('zhaoliu','zhaoliun@qq.com',24);
    
    select * from student;
    
  • 新建maven项目,选择quickstart模板

  • 调整目录结构

    • 新增缺失的目录

    • 删除自动生成的测试类

  • 修改pom文件

    • 添加mybatis依赖
    • 添加mysql依赖
     	<!-- 添加mybatis依赖-->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.10</version>
        </dependency>
    
        <!-- 添加mysql依赖-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.30</version>
        </dependency>
    
    • 添加资源文件的指定(指定一个目录后,原来默认的resources资源目录会失效,所以所有需要的资源目录都要手动指定)
      <build>
        <!-- 添加资源文件的指定-->
        <resources>
          <resource>
            <!-- 目标目录1 -->
            <directory>src/main/java</directory>
            <includes>
              <!-- 被包括的文件类型 -->
              <include>**/*.xml</include>
              <include>**/*.properties</include>
            </includes>
            <filtering>false</filtering>
          </resource>
    
          <resource>
            <!-- 目标目录2 -->
            <directory>src/main/resources</directory>
            <includes>
              <!-- 被包括的文件类型 -->
              <include>**/*.xml</include>
              <include>**/*.properties</include>
            </includes>
            <filtering>false</filtering>
          </resource>
        </resources>
      </build>
    
  • idea中添加数据库的可视化

  • 添加jdbc.properties属性文件(数据库连接文件:添加到/src/main/resources/目录下)

    jdbc.driverClassName=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://ip:3306/数据库名称?useUnicode=true&characterEncoding=utf8
    jdbc.username=XXXX
    jdbc.password=YYYY
    
  • 添加SqlMapConfig.xml文件(mybatis的核心配置文件:添加到/src/main/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>
    
        <!-- 读取属性文件(jdbc.properties)
             resource:从resources目录下找指定名称的文件加载
             url:使用绝对路径加载属性文件
        -->
        <properties resource="jdbc.properties"/>
    
        <!-- 设置数据库的环境变量(数据库连接配置) -->
        <environments default="develop">
            <!-- 开发时在公司使用的数据库配置
                 id:就是提供给environments的default属性使用
                 根据实际情况可以有多个environment配置
            -->
            <environment id="develop">
                <!-- 配置事务管理
                     type:指事务管理的方式
                     JDBC:事务的控制交给程序员处理
                     MANAGED:由容器(Spring)来管理事务
                -->
                <transactionManager type="JDBC"/>
                <!-- 配置数据源
                     type:指定不同的的配置方式
                     JNDI:java命名目录接口,在服务器端进行数据库连接池的管理
                     POOLED:使用数据库连接池
                     UNPOOLED:不使用数据库连接池
                -->
                <dataSource type="POOLED">
                    <!--
                        配置数据库连接的基本属性,用到数据库连接配置文件(jdbc.properties)
                    -->
                    <property name="driver" value="${jdbc.driverClassName}"/>
                    <property name="url" value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
    
        <!--
            必须在mybatis核心配置文件中注册mapper.xml文件
            resource:从resources目录下找指定名称的文件加载
            url:使用绝对路径加载属性文件
            class:动态代理方式下的注册
        -->
        <mappers>
            <mapper resource="StudentMapper.xml"/>
        </mappers>
    </configuration>
    
  • 创建实体类Student,用来封装数据

    • 对照数据表构建实体类
  • 添加完成学生表的增删改查功能的StudentMapper.xml文件(添加到/src/main/resources/目录下),并在mybatis的核心配置文件中注册

    • 配置示例
    <!-- 映射文件的头信息 -->
    <?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:是整个文件的大标签,用来开始和结束标签
        属性仅1个:
            namespace:指定命名空间(相当于包名),用来区分不同的mapper.xml文件中相同的id属性
    -->
    <mapper namespace="wangxun">
        <!-- 完成查询全部学生的功能
             原先操作:List<Student> getAll();
             现在:
             通过namespace和id指定要操作的sql语句
             resultType:指定返回的查询结果集的类型,如果是集合,则必须是泛型 
    		 且必须用该类型所在的具体包名来定位该类型(为了后期利用反射生成该类型的数据对象)
             parameterType:如果有参数,则通过他来指定参数的类型
        -->
        <select id="getAll" resultType="com.example.pojo.Student">
            select
                id, name, email, age
            from
                student
        </select>
    </mapper>
    
  • 创建测试类,进行功能测试

    • 测试代码示例
    package com.example.test;
    
    import com.example.pojo.Student;
    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;
    import java.util.List;
    
    public class TestStudent {
        @Test
        public void testStudent() throws IOException {
            //使用文件流获取核心配置文件SqlMapConfig.xml
            InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
            //创建SqlSessionFactory工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            //取出sqlSession对象
            SqlSession sqlSession = factory.openSession();
            //完成查询操作
            List<Student> list = sqlSession.selectList("wangxun.getAll");
            list.forEach(System.out::println);
            //关闭sqlSession
            sqlSession.close();
        }
    }
    
    /*
    输出结果:
    Student{id=1, name='张三', email='zhangsan@126.com', age=22}
    Student{id=2, name='李四', email='lisi@126.com', age=21}
    Student{id=3, name='王五', email='wangwu@163.com', age=22}
    Student{id=4, name='赵六', email='zhaoliun@qq.com', age=24}
    
    Process finished with exit code 0
    */
    

标签:02,name,age,添加,mybatis,import,com,email
来源: https://www.cnblogs.com/nefu-wangxun/p/16562720.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有