美文网首页
第一个MyBatis程序

第一个MyBatis程序

作者: 了春风 | 来源:发表于2021-01-30 14:53 被阅读0次

    思路:搭建环境---导入MyBatis--编写代码---测试!

    一、搭建环境

    1、搭建数据库环境:

    CREATE DATABASE `mybatis`;
    
    USE `mybatis`;
    
    CREATE TABLE `user` (
    `id` INT(20) NOT NULL PRIMARY KEY,
    `name` VARCHAR(30) DEFAULT NULL,
    `pwd` VARCHAR(30) DEFAULT NULL
    )ENGINE=INNODB DEFAULT CHARSET=utf8;
    

    engine=innodb和engine=myisam区别:
    1、myisam,默认类型。是存储记录和文件的标准类型,支持全文搜索,可以被压缩,与其他引擎相比,有检查和修复表格的大部分工具,不支持事务,不支持外键。强调的是性能,执行速度比较快,可以在不同的系统中迁移。如果执行大量 的SELECT,MyISAM是更好的选择。
    2、innodb,支持事务处理等高级处理,支持外键,如果执行大量的select和update语句,出于性能考虑,使用innodb是最好的选择。

    INSERT INTO `user` (`id`,`name`,`pwd`) VALUES
    (1,'刘能','123'),
    (2,'赵四','456'),
    (3,'谢广坤','789')
    

    2、idea创建Maven项目:

    Snipaste_2021-01-30_13-36-21.png

    3、idea连接MySQL

    Snipaste_2021-01-30_13-39-10.png Snipaste_2021-01-30_13-42-11.png Snipaste_2021-01-30_13-43-59.png

    二、导入MyBatis

    1、导入相关依赖

    <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>5.1.47</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.18.10</version>
                </dependency>
        </dependencies>
    

    2、防止配置文件不导出或不生效的解决方案:

    <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    

    三、编写代码

    1、项目结构:

    Snipaste_2021-01-30_14-49-42.png

    2、在resources中创建mybatis-config.xml(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>
        <environments default="development">
            <environment id="development">
    <!--            Mybatis默认的事务管理器就是JDBC,连接池:POOLED-->
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;
                    useUnicode=true&amp;characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <!--每一个Mapper. XML都需要在Mybatis核心配置文件中注册!-->
        <mappers>
            <package name="com.why.mapper"/>
        </mappers>
    </configuration>
    

    3、编写工具类(java.com.why.utils.MyUtils.class)

    package com.why.utils;
    
    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;
    //工具类
    //SqlSessionFactory --》SqlSession
    public class MyUtils {
        private static SqlSessionFactory sqlSessionFactory;
        static {
            try {
                //使用MyBatis第一步:获取sqlSessionFactory对象
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
        // 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
        // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }
    

    4、编写实体类(java.com.why.pojo.User.class)

    package com.why.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data//生成set,get方法,
    @AllArgsConstructor//有参构造
    @NoArgsConstructor//无参构造
    public class User {
        private int id;
        private String name;
        private String pwd;
    }
    

    5、编写映射接口(java.com.why.mapper.UserMapper.interface)

    package com.why.mapper;
    
    import com.why.pojo.User;
    import java.util.List;
    
    public interface UserMapper {
        //查询所有数据
        List<User> selectUser();
    }
    

    6、编写映射文件(java.com.why.mapper.UserMapper.xml)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.why.mapper.UserMapper">
        <select id="selectUser" resultType="com.why.pojo.User">
            select *
            from mybatis.user;
        </select>
    </mapper>
    

    四、测试

    1、测试(MyTest.class):

    package com.why.dao;
    
    import com.why.mapper.UserMapper;
    import com.why.pojo.User;
    import com.why.utils.MyUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import java.util.List;
    
    public class MyTest {
        @Test
        public void test() {
            SqlSession sqlSession = MyUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = mapper.selectUser();
            for (User user : users) {
                System.out.println(user);
            }
            sqlSession.close();
        }
    }
    
    

    2、查询结果

    Snipaste_2021-01-30_14-48-28.png

    3、报错utf-8:可以把mybatis-config.xml中的注释删除,也可以把idea的编码统一

    相关文章

      网友评论

          本文标题:第一个MyBatis程序

          本文链接:https://www.haomeiwen.com/subject/haohtltx.html