• 10.29第一个Mybatis程序


    10.29第一个Mybatis程序

    步骤

    1. 新建Maven工程

    2. 配置pom.xml文件

    3. 新建项目层级目录

    4. 书写配置文件

    配置pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>

     <groupId>org.example</groupId>
     <artifactId>MybatisStudy</artifactId>
     <version>1.0-SNAPSHOT</version>
     <packaging>war</packaging>

     <name>MybatisStudy</name>
     <!-- FIXME change it to the project's website -->
     <url>http://www.mybatisstudy.com</url>

     <properties>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <maven.compiler.source>1.7</maven.compiler.source>
       <maven.compiler.target>1.7</maven.compiler.target>
     </properties>

     <dependencies>
       <!--单元测试的junit-->
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
         <scope>test</scope>
       </dependency>

       <!--导入testng-->
       <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <version>7.1.0</version>
       </dependency>

       <!--导入mysql驱动-->
       <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>8.0.19</version>
       </dependency>

       <!--导入mybatis-->
       <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.5</version>
       </dependency>

       <!--导入log4j依赖-->
       <dependency>
         <groupId>com.att.inno</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.13</version>
       </dependency>
     </dependencies>

     <build>
       <finalName>MybatisStudy</finalName>
       <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
         <plugins>
           <plugin>
             <artifactId>maven-clean-plugin</artifactId>
             <version>3.1.0</version>
           </plugin>
           <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
           <plugin>
             <artifactId>maven-resources-plugin</artifactId>
             <version>3.0.2</version>
           </plugin>
           <plugin>
             <artifactId>maven-compiler-plugin</artifactId>
             <version>3.8.0</version>
           </plugin>
           <plugin>
             <artifactId>maven-surefire-plugin</artifactId>
             <version>2.22.1</version>
           </plugin>
           <plugin>
             <artifactId>maven-war-plugin</artifactId>
             <version>3.2.2</version>
           </plugin>
           <plugin>
             <artifactId>maven-install-plugin</artifactId>
             <version>2.5.2</version>
           </plugin>
           <plugin>
             <artifactId>maven-deploy-plugin</artifactId>
             <version>2.8.2</version>
           </plugin>
         </plugins>
       </pluginManagement>
     </build>
    </project>

    新建项目层级目录

    /MybatisStudy
    /idea
    /src
    /main
    /java
    /com
    /junkingboy
    /bean
    /mapper
    /properties
    /resources
    /webapp
    /WEB-INF

    书写配置文件

    日志配置文件:--->properties目录下

    # logging configuration
    log4j.rootLogger=ERROR,stdout
    # Mybatis logging configuration
    log4j.logger.com.junkingboy=DEBUG
    # 控制台输出
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p[%t] - %m%n

    在日志文件中配置了全局的日志配置、MyBatis 的日志配置和控制台输出,其中 MyBatis 的日志配置用于将 com.junkingboy 包下所有类的日志记录级别设置为 DEBUG

    配置WebsiteMapper.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.junkingboy.mapper.WebsiteMapper">
       <!--添加一个网站信息-->
       <insert id="addWebsite" parameterType="com.junkingboy.bean.Website">
          insert into javawebtest.website(name, url, age, country) values(#{name}, #{url}, #{age}, #{country});
       </insert>
       
       <!--查询所有网站的信息-->
       <select id="selectAllWebsite" resultType="com.junkingboy.bean.Website">
          select * from javawebtest.website;
       </select>
    </mapper>

    标签说明:

    • <mapper> 元素是配置文件的根元素,它包含了namespace属性,该属性值通常设置为“包名+SQL映射文件名”,用于指定唯一的命名空间。

    • <select><insert> 中的信息用于执行查询、添加操作

    • “#{}”表示一个占位符,相当于“?”,而“#{name}”表示该占位符待接收参数的名称为name

    Mybatis核心配置文件:

    <?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="logImpl" value="LOG4J"/>
       </settings>

       <!--配置mybatis的运行环境-->
       <environments default="test">
           <environment id="test">
               <!--使用JDBC的事务管理-->
               <transactionManager type="JDBC" />
               <dataSource type="POOLED">
                   <!--配置mysql数据库的驱动-->
                   <!--配置驱动-->
                   <property name="driver" value="com.mysql.jdbc.Driver" />
                   <!--连接url-->
                   <property name="url" value="jdbc:mysql://localhost:3306/javawebtest?characterEncoding=utf-8"/>
                   <!--配置用户名和密码-->
                   <property name="username" value="root"/>
                   <property name="password" value="root"/>
               </dataSource>
           </environment>
       </environments>

       <!--将mapper文件加入到配置文件中-->
       <mappers>
           <mapper resource="com/junkingboy/mapper/WebsiteMapper.xml" />
       </mappers>
    </configuration>

    特点:

    该文件配置在resources目录下

    为了方便在框架集成时更好地区分各个配置文件,一般将此文件名命名·“mybatis-config.xml”·,该文件用于配置数据库连接信息和 MyBatis 的参数。

    创建测试类:

    步骤:

    • 输入流读取配置文件

    • 根据配置信息构建SqlSessionFactory对象

    • 通过SqlSessionFactory对象创建SqlSession对象

    • 使用SqlSesion对象的方法执行对数据库的操作

    实体类:

    package com.junkingboy.test;

    import com.junkingboy.bean.Website;
    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 java.io.IOException;
    import java.io.InputStream;
    import java.util.List;

    /**
    * @description:测试Mybatis
    * @data: 2021/10/29 17:53
    * @author: Lucifer
    */
    public class TestWebsite {
       public static void main(String[] args) throws IOException {
           /*
           步骤:
           - 输入流读取配置文件
           - 根据配置信息构建`SqlSessionFactory`对象
           - 通过`SqlSessionFactory`对象创建`SqlSession`对象
           - 使用`SqlSesion`对象的方法执行对数据库的操作
            */
           //io流读取配置文件
           InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
           //根据配置文件构建SqlSessionFactory对象
           //SqlSessionFactoryBuilder是SqlSessionFactory接口的实现类,提供了创建对象的方法
           SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
           //通过SqlSessionFactory对象创建SqlSession对象
           SqlSession ss = ssf.openSession();
           /*SqlSession执行文件中定义的SQL,并返回映射结果*/

           //添加网站--->创建Website的bean对象
           Website website = new Website();
           website.setName("帅气俊!");
           website.setUrl("http://localhost/");
           website.setAge(22);
           website.setCountry("CN");

           //使用SqlSession下的方法执行插入操作
           /*
           传参:
           - xml中定义的属性名称
           - 需要插入的对象
            */
           ss.insert("com.junkingboy.mapper.WebsiteMapper.addWebsite", website);

           //查看所有的网站--->封装成一个list对象
           List<Website> listWeb = ss.selectList("com.juningboy.mapper.WebsiteMapper.selectAllWebsite");
           //读取list内容
           listWeb.forEach(System.out::println);

           //提交事务
           ss.commit();
           //关闭SqlSession连接
           ss.close();
      }
    }
    It's a lonely road!!!
  • 相关阅读:
    k8s 中 nfs作为存储的三种方式
    k8s-ingress部署测试以及深入理解
    k8s全方位监控-prometheus-配置文件介绍以及基于文件服务发现
    k8s全方位监控 -prometheus实现短信告警接口编写(python)
    prometheus-数据展示之grafana部署和数据源配置
    k8s全方位监控-prometheus-alertmanager部署-配置第一条告警邮件
    k8s全方位监控-prometheus部署
    k8s-coredns 介绍和部署
    k8s-静态PV和动态PV
    消息扩散
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15497474.html
Copyright © 2020-2023  润新知