• MyBatis入门 创建一个简单的程序


    准备:

    需要提前安装好以下工具软件

    (1) IDEA 2021

    (2)Java 1.8

    (3)数据库 MySQL 5.7 (SQLyog  或  Navicat)

     (4)SQL yog 或 Navicat (用于操作MySQL数据库)

    步骤:

    1 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8

    2 新建表:

    USE mybatisdemo
    
    CREATE TABLE users(
        uid INT PRIMARY KEY AUTO_INCREMENT,
        uname VARCHAR(20) NOT NULL,
        uage INT NOT NULL
    );
    INSERT INTO users(uid,uname,uage) VALUES(NULL,'张##',25),(NULL,'李##',23),(NULL,'王##',23);

    3 IDEA 创建 maven工程, 点击 File 菜单 -- New 菜单-- Project

     选择 Maven -- Project SDK 1.8

     New Project,输入 Name, 选择 Location,输入 GroupId

     选择 This Window

     完成之后如下图所示:

    4 在 src - main - java 下新建 package, 名字为 com.mybatisdemo.pojo

    在 com.mybatisdemo.pojo 中新建实体类 User.java

    使用IDEA,其中的 set 和 get 可以快速生成。

    package com.mybatisdemo.pojo;
    
    public class User {
        private int uid;             //用户id
        private String uname;       //用户姓名
        private int uage;            //用户年龄
    
        public int getUid() {
            return uid;
        }
    
        public void setUid(int uid) {
            this.uid = uid;
        }
    
        public String getUname() {
            return uname;
        }
    
        public void setUname(String uname) {
            this.uname = uname;
        }
    
        public int getUage() {
            return uage;
        }
    
        public void setUage(int uage) {
            this.uage = uage;
        }
    }

    5 在  src - main - resources 下新建文件夹  mapper

    src - main - resources - mapper 下建文件 UserMapper.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 为映射的根节点-->
    <!-- mapper 为映射的根节点,namespace 指定Dao接口的完整类名,通常设置为对应实体类的全限定类名。
    mybatis 会依据这个接口动态创建一个实现类去实现这个接口,
    而这个实现类是一个Mapper对象-->
    <mapper namespace="com.mybatisdemo.pojo.User">
        <!--id ="接口中的方法名"
      parameterType="传入的参数类型"
      resultType = "返回实体类对象,使用包.类名"-->
        <select id="findById" parameterType="int"
                resultType="com.mybatisdemo.pojo.User">
             select * from users where uid = #{id}
        </select>
    </mapper>

    6 在  src - main - resources 下新建 db.properties

    mysql.driver=com.mysql.cj.jdbc.Driver
    mysql.url=jdbc:mysql://127.0.0.1:3306/mybatisdemo?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
    mysql.username=root
    mysql.password=123456

    7 在  src - main - resources 下新建 mybatis-config.xml (核心配置文件,习惯上命名为 mybatis-config.xml )

    <?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>
        <!-- 环境配置 -->
        <!-- 加载类路径下的属性文件 -->
        <properties resource="db.properties"/>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <!-- 数据库连接相关配置 ,db.properties文件中的内容-->
                <dataSource type="POOLED">
                    <property name="driver" value="${mysql.driver}"/>
                    <property name="url" value="${mysql.url}"/>
                    <property name="username" value="${mysql.username}"/>
                    <property name="password" value="${mysql.password}"/>
                </dataSource>
            </environment>
        </environments>
        <!-- mapping文件路径配置 -->
        <mappers>
            <mapper resource="mapper/UserMapper.xml"/>
        </mappers>
    
    </configuration>

    8 src - test - java - 下建 package, 名字为Test 

    src - test - java - Test 下建立类文件 UserTest.java

    package Test;
    
    import com.mybatisdemo.pojo.User;
    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.Reader;
    
    public class UserTest {
        @Test
        public void userFindByIdTest() {
            //读取文件名
            String resources = "mybatis-config.xml";
            //创建流
            Reader reader = null;
            try {
                //读取mybatis-config.xml文件内容到reader对象中
                reader = Resources.getResourceAsReader(resources);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //初始化mybatis数据库,创建SqlSessionFactory类的实例
            SqlSessionFactory sqlMapper = new
                    SqlSessionFactoryBuilder().build(reader);
            //创建SqlSession实例
            SqlSession session = sqlMapper.openSession();
            //传入参数查询,返回结果
            User user = session.selectOne("findById", 1);
            //输出结果
            System.out.println(user.getUname());
            //关闭session
            session.close();
        }
    }

    9 修改 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>com.mybatisdemo</groupId>
        <artifactId>mybatis_demo01</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.11</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <!--               <scope>test</scope>-->
                <scope>compile</scope>
            </dependency>
        </dependencies>
        <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    
    </project>

    10 最终的文件结构:

    11 在 UserTest.java 的 userFindByIdTest 上右键,Run :

    源代码:

    链接:https://pan.baidu.com/s/1LAIYzav5X30oTzIjxMhElA
    提取码:1234

    ===============================================

    补充:

    mapper里面的namespace?

    参考:

    https://www.cnblogs.com/emanlee/p/15869468.html

    session.selectOne("findById", 1);

    参考:

    如果多个类(接口)中有同名的 findById 方法怎么办?

    ===============================================

    REF

    https://www.cnblogs.com/benjieqiang/p/11183580.html

    https://blog.csdn.net/qq_32166627/article/details/70741729

    https://mybatis.org/mybatis-3/zh/getting-started.html

    https://www.w3cschool.cn/mybatis/mybatis-dyr53b5w.html

    黑马程序员书籍

  • 相关阅读:
    解决VMwave下卡死的办法
    深度探索C++对象模型第四章:函数语义学
    cc
    tbb库的使用
    10内核同步方法
    哈希
    django 和restful framework 初始配置轻松搞定
    linux有趣动画--代码雨
    linux有趣开机图标--佛祖保佑
    Socket是什么,通俗易懂点说
  • 原文地址:https://www.cnblogs.com/emanlee/p/15866485.html
Copyright © 2020-2023  润新知