• 第一个Mybatis及运行问题分析


    1 Hello Mybatis

    1.1 搭建环境

    搭建数据库

    CREATE DATABASE `mybatis`;
    
    USE mybatis;
    
    DROP TABLE `user`;
    
    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;
    
    INSERT INTO `user`(id, `name`, `pwd`) VALUES
    (1, '张三', '123456'),
    (2, '李四', '163561'),
    (3, '王五', '123698');

    新建项目:

      1.新建一个普通的maven项目

      2.删除 src 目录,将此项目作为一个父工程

      3.导入依赖

    <!--导入依赖-->
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.5</version>
            </dependency>
    
            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>
    
            <!--junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>

    1.2 核心配置文件

    <?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核心配置文件-->
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybaits?characterEncoding=utf-8&amp;serverTimezone=UTC"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
    </configuration>

    1.3 编写Mybatis工具类

    //获取SqlSession对象
    public class MybatisUtils {
        
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                //获取SqlSessionFactory对象
                String resource= "";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
        }
    }

    1.4 编写代码

    • 实体类

    • Dao接口 

    public interface UserDao {
    ​
        List<User> getUserList();
    }
    • 接口实现类

      由原来的UserDaoImpl转换为一个Mapper.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">
    
    <!--namespace绑定一个对应的Dao接口-->
    <mapper namespace="com.gazikel.dao.UserDao">
        <select id="getUserList" resultType="com.gazikel.pojo.User">
            select * from mybatis
        </select>
    </mapper>

    1.5 测试

      每一个Mapper.xml文件都要在mybatis-config.xml核心配置文件中配置。

    <mappers>
      <mapper resource="com/gazikel/dao/UserMapper.xml"/>
    </mappers>

      Maven中由于它的约定大于配置,可能遇到配置文件无法被导出或者生效的问题,解决方案如下:

     <!--在build中配置resources,来防止我们资源导出失败的问题-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
    
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>

      但是当我添加了这段话在pom.xml中后程序依然报错,考虑有可能是xml中出现了中文注释,删掉即可解决问题。

    可能遇到的问题:

    • 配置文件没有注册

    • 绑定借口错误

    • 方法名错误

    • 返回类型错误

    • Maven导出资源问题

    遇到其他一些问题不要慌,好好检查一下这些地方有没有错误。

  • 相关阅读:
    python 序列应用
    跨浏览器本地存储框架(store.js/USTORE.js/Box.js)
    【设计开发命名必备】英语单词缩写规则
    Web服务器性能估算
    Spring整合FreeMarker本地化动态设置
    mybatis注解详解
    两种Freemarker模板路径设置方法
    Drools5集成Spring3
    Oracle 时间戳生成语句(秒级+毫秒级)
    Drools动态加载规则文件
  • 原文地址:https://www.cnblogs.com/Gazikel/p/14470839.html
Copyright © 2020-2023  润新知