2022.5.13 第一个Mybatis程序

2、第一个Mybatis程序

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

2.1、搭建环境

搭建数据库

复制代码
 1  CREATE DATABASE `mybatis`
 2  USE `mybatis`
 3  4  CREATE TABLE `user`(
 5   `id` INT(20) NOT NULL,
 6   `name` VARCHAR(30) NOT NULL,
 7   `pwd` VARCHAR(30) NOT NULL,
 8   PRIMARY KEY(`id`)
 9  )ENGINE=INNODB DEFAULT CHARSET=utf8;
10 11  INSERT
12  INTO `user`(`id`,`name`,`pwd`) 
13  VALUES(1,'小明','123456'),(2,'小红','123456'),(3,'小蓝','123457')
复制代码

新建普通maven项目

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

2、删除src目录

3、导入maven依赖

复制代码
 1  <?xml version="1.0" encoding="UTF-8"?>
 2  <project xmlns="http://maven.apache.org/POM/4.0.0"
 3           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5      <modelVersion>4.0.0</modelVersion>
 6  7      <groupId>com.xing</groupId>
 8      <artifactId>Mybatis-Study</artifactId>
 9      <version>1.0-SNAPSHOT</version>
10 11      <properties>
12          <maven.compiler.source>8</maven.compiler.source>
13          <maven.compiler.target>8</maven.compiler.target>
14      </properties>
15 16      <dependencies>
17          <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
18          <dependency>
19              <groupId>mysql</groupId>
20              <artifactId>mysql-connector-java</artifactId>
21              <version>8.0.27</version>
22          </dependency>
23 24          <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
25          <dependency>
26              <groupId>org.mybatis</groupId>
27              <artifactId>mybatis</artifactId>
28              <version>3.5.7</version>
29          </dependency>
30 31          <!-- https://mvnrepository.com/artifact/junit/junit -->
32          <dependency>
33              <groupId>junit</groupId>
34              <artifactId>junit</artifactId>
35              <version>4.12</version>
36          </dependency>
37 38      </dependencies>
39 40  </project>
复制代码

2.2、创建一个模块

  • 编写mybatis的核心配置文件

复制代码
 1  <?xml version="1.0" encoding="UTF-8" ?>
 2  <!DOCTYPE configuration
 3          PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4          "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5  <!--configuration核心配置文件-->
 6  <configuration>
 7  8      <environments default="development">
 9          <environment id="development">
10              <transactionManager type="JDBC"/>
11              <dataSource type="POOLED">
12                  <property name="driver" value="com.mysql.jdbc.Driver"/>
13                  <!--                                                    mybatis自己创建的数据库-->
14                  <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
15  <!--                自己的用户名与密码-->
16                  <property name="username" value="root"/>
17                  <property name="password" value="123456"/>
18              </dataSource>
19          </environment>
20      </environments>
21 22  </configuration>
复制代码
  • 编写mybatis工具类

复制代码
 1  package com.xing.utils;
 2  3  import org.apache.ibatis.io.Resources;
 4  import org.apache.ibatis.session.SqlSession;
 5  import org.apache.ibatis.session.SqlSessionFactory;
 6  import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7  8  import java.io.IOException;
 9  import java.io.InputStream;
10 11  //工具类 SqlSessionFactory-> SqlSession
12  public class MybatisUtils {
13      //提升作用域 
14      private static SqlSessionFactory sqlSessionFactory;
15      //加载配置文件
16      static{
17          try {
18              //获取SqlSessionFactory对象
19              String resource = "mybatis-config.xml";
20              InputStream inputStream = Resources.getResourceAsStream(resource);//转变成流
21              sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
22          } catch (IOException e) {
23              e.printStackTrace();
24          }
25      }
26 27      //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
28      // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
29      // 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
30      public static SqlSession getSqlSession() {
31          return sqlSessionFactory.openSession();
32  //        SqlSession sqlSession = sqlSessionFactory.openSession();
33  //        return sqlSession;
34      }
35 36 37  }
复制代码

2.3、编写代码

  • 实体类

复制代码
 1  package com.xing.pojo;
 2  3  //实体类
 4  public class User {
 5      private int id;
 6      private String name;
 7      private String pwd;
 8  9      public User() {
10      }
11 12      public User(int id, String name, String pwd) {
13          this.id = id;
14          this.name = name;
15          this.pwd = pwd;
16      }
17 18      public int getId() {
19          return id;
20      }
21 22      public void setId(int id) {
23          this.id = id;
24      }
25 26      public String getName() {
27          return name;
28      }
29 30      public void setName(String name) {
31          this.name = name;
32      }
33 34      public String getPwd() {
35          return pwd;
36      }
37 38      public void setPwd(String pwd) {
39          this.pwd = pwd;
40      }
41 42      @Override
43      public String toString() {
44          return "User{" +
45                  "id=" + id +
46                  ", name='" + name + '\'' +
47                  ", pwd='" + pwd + '\'' +
48                  '}';
49      }
50  }
复制代码
  • Dao接口

复制代码
 1 package com.xing.dao;
 2  3  import com.xing.pojo.User;
 4  5  import java.util.List;
 6  7  public interface UserDao {
 8      List<User> getUserList();
 9  }
复制代码

接口实现类由原来的UserDaolmpl转变为一个Mapper配置文件.

复制代码
 1  <?xml version="1.0" encoding="UTF-8" ?>
 2  <!DOCTYPE mapper
 3          PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4          "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5  <!--namespace=绑定一个对应的Dao(Mapper)接口-->
 6  <mapper namespace="com.xing.dao.UserDao">
 7  <!--    id对应接口中的方法名 resultType返回的结果集类型(写集合中的范型类型)-->
 8      <select id="getUserList" resultType="com.xing.pojo.User">
 9          select * from mybatis.user;
10      </select>
11  </mapper>
复制代码

2.4、测试

复制代码
 1 package com.xing.dao;
 2  3  import com.xing.pojo.User;
 4  import com.xing.utils.MybatisUtils;
 5  import org.apache.ibatis.session.SqlSession;
 6  import org.junit.Test;
 7  8  import java.util.List;
 9 10  public class UserDaoTest {
11      @Test
12      public void test() {
13          SqlSession sqlSession = MybatisUtils.getSqlSession();
14          //方式一:执行  得到接口对象调用其中方法  接口的class对象
15          UserDao userDao = sqlSession.getMapper(UserDao.class);
16          List<User> userList = userDao.getUserList();
17 18          for (User user : userList) {
19              System.out.println(user);
20          }
21 22          //关闭SqlSession
23          sqlSession.close();
24      }
25  }
复制代码

运行报错

注意:

org.apache.ibatis.binding.BindingException: Type interface com.xing.dao.UserDao is not known to the MapperRegistry.

修改mybatis的核心配置文件,添加mappers资源路径

复制代码
 1  <?xml version="1.0" encoding="UTF-8" ?>
 2  <!DOCTYPE configuration
 3          PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4          "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5  <!--configuration核心配置文件-->
 6  <configuration>
 7  8      <environments default="development">
 9          <environment id="development">
10              <transactionManager type="JDBC"/>
11              <dataSource type="POOLED">
12                  <property name="driver" value="com.mysql.jdbc.Driver"/>
13                  <!--                                                    mybatis自己创建的数据库-->
14                  <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
15  <!--                自己的用户名与密码-->
16                  <property name="username" value="root"/>
17                  <property name="password" value="123456"/>
18              </dataSource>
19          </environment>
20      </environments>
21 22      <!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
23      <mappers>
24          <mapper resource="com/xing/dao/UserMapper.xml"></mapper>
25      </mappers>
26  </configuration>
复制代码

在运行报错

 

 

由于maven约定大于配置,生成的target文件中没有导出UserMapper.xml

 

 

 

 

在pom文件中添加

复制代码
 1  <!--buiLd中配置resources,来防止我们资源导出失败的问题,例java目录中只能导出java文件-->
 2  <build>
 3      <resources>
 4          <resource>
 5              <directory>src/main/resources</directory>
 6              <includes>
 7                  <include>**/*.properties</include>
 8                  <include>**/*.xml</include>
 9              </includes>
10              <filtering>false</filtering>
11          </resource>
12          <resource>
13              <directory>src/main/java</directory>
14              <includes>
15                  <include>**/*.properties</include>
16                  <include>**/*.xml</include>
17              </includes>
18              <filtering>false</filtering>
19          </resource>
20      </resources>
21  </build>
复制代码

 

 

你们可以能会遇到的问题:

1.配置文件没有注册

2.绑定接口错误。

3.方法名不对

4.返回类型不对

5.Maven导出资源问题

 

posted @   暴躁C语言  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示