第一个mybatis程序

思路:搭建环境->导入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;

INSERT INTO `user`(`id`,`name`,`pwd`) VALUES 
(1,'张三','123456'), 
(2,'李四','123459'), 
(3,'王五','123450')
复制代码

2 )新建项目

2.1)新建普通maven项目

 

 

 

 

 

 2.2删除src目录

 2.3导入依赖

 

 

 

复制代码
<!--   导入依赖 -->
    <dependencies>
<!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
<!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
<!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
复制代码

2.4创建核心模块

 

 

 

 

  •  编写mybatis的核心配置文件

 

 

 注意:如果连接不上数据库报错 把useSSL=true 改为useSSL=false mysql和idea版本不兼容导致

复制代码
<?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">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

</configuration>
复制代码

 

 

  • 编写mybatis的工具类

 

 

复制代码
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {

        try {
            // 获取sqlsessionFactory对象

            // 采购建造工厂的原材料
            String resource = "mybatis-config.xml";
            // 把原材料运到目的地
            InputStream inputStream = Resources.getResourceAsStream(resource);
            // 请建筑工人SqlSessionFactoryBuilder去造工厂
             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        // 打开工厂开始生产产品sqlsession
        return sqlSessionFactory.openSession();
    }
}
复制代码

 

3 编写代码

  • 实体类

 

 

复制代码
package com.mine.pojo;

public class User {
    private int id;
    private String name;
    private String pwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}
复制代码

 

    接口

 

 

复制代码
package com.mine.dao;

import com.mine.pojo.User;

import java.util.List;

public interface UserDao {
    List<User> getUserList();

}
复制代码

 

  • 接口实现类由原来的impl转换为一个mapper配置文件

 

 

复制代码
<?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接口/mapperjiekou -->
<!--这句话相当于原来的实现接口-->
<mapper namespace="com.mine.dao.UserDao">
<!--    查询语句,id对应以前的方法名字-->
    <select id="getUserList" resultType="com.mine.pojo.User">
    select * from mybatis.user;
  </select>
</mapper>
复制代码

4:测试

 

 

 

复制代码
public class UserDaoTest {
    @Test
    public void test(){
        // 第一步,获得sqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        // 执行sql
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }

        // 关闭sqlSession
        sqlSession.close();


    }
}
复制代码

 

 

注意点:1)org.apache.ibatis.binding.BindingException: Type interface com.mine.dao.UserDao is not known to the MapperRegistry.

错误原因及解决方案(相当于写javaweb的时候没有去web.xml中注册servlet/filter/listener)

 

 

 2)

 

 错误原因及解决方案

maven默认查找不是在我们自己写的这里,会被过滤掉

解决:pom.xml中添加如下代码让我们写的文件也能被查找到

复制代码
 <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>
复制代码

 

posted on   Love&Share  阅读(39)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示