创建第一个Mybatis程序

创建第一个Mybatis程序

一.搭建开发环境

1.创建Maven项目

在这里插入图片描述
不需要使用任何模板,直接next,创建最简单的Maven工程

在这里插入图片描述

2.删除src包

在这里插入图片描述

3.配置父工程的pom文件

在你的pom文件中的如下配置代表父工程
    <groupId>com.zlq</groupId>
    <artifactId>Mybatis1</artifactId>
    <version>1.0-SNAPSHOT</version>
  

导入依赖,Mysql jar包,Maven核心jar包,junit

     <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
    </dependencies>

注意:maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,
解决方案:
在pom文件的bulid中配置resource,来解决资源导出失败的问题(最好在子工程中的pom文件中也加入之)

  <!--maven资源过滤-->
  ```java
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

4.创建一个子工程

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

5.在resource目录内创建并配置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>
    <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=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="zaxscd"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/zlq/dao/userMapper.xml"/>
    </mappers>
</configuration>

这样在idea中的第一个Mybatis环境搭建完成了

二.搭建Mysql数据库

CREATE DATABASE `mybatis`; 

USE `mybatis`; 

DROP TABLE IF EXISTS `user`;

 CREATE TABLE `user` 
 ( `id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
 `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) 
 ENGINE=InnoDB DEFAULT CHARSET=utf8; 
 
 insert into `user`(`id`,`name`,`pwd`) values 
 (1,'Larry','123456'),
 (2,'张 三','abcdef'),
 (3,'李四','987654');

三.创建MybatisUtils工具类

  1. 任何一个Mybatis应用都少不了SqlSessionFactory的实例,而我们最终目的就是通过SqlSessionFactory的实例获取sqlSession(获取sqlSession相当于获取JDBC中的connection连接)
  2. SqlSessionFactory的实例可以通过 SqlSessionFactoryBuilder.build() 获得,不能通过new的方式获取
  3. SqlSessionFactoryBuilder又可以通过之前配置的Mybatis-config.xml文件中获得
public class MybatisUtils {

    //1.获取sqlSessionFactory
    private static SqlSessionFactory sqlSessionFactory;
    static {

        try {
            String resource = "mybatis-config.xml";
            InputStream is = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //2.从sqlSessionFactory中获取sqlSession
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

四.创建User实体类

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

五.创建Mapper接口类

public interface UserMapper {
    List<User> selectUser();
}

六.编写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">

<mapper namespace="com.zlq.dao.UserDao">
    <select id="selectUser" resultType="com.zlq.pojo.User">
        select * from user
    </select>
</mapper>

此配置文件相当于jdbc中UserDao的实现类
namespace命名空间:其名字必须要和接口名字一致
id:对应namespace的方法名字
resuleType:sql语句执行的返回值

七.创建测试类

终于到了最终的测试环节,这个程序的代码量并不多,而是配置很麻烦,相信按照我的步骤来配置不会错,那么我们开始测试吧
在这里插入图片描述
测试代码一定要放在下面的test模块中

  1. 先获取sqlSession
  2. 获取Mapper,声明接口对象
  3. 关闭sqlSession
public class TestUser {
    @Test
    public void testSelect(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.selectUser();
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}

好了来测一下,最后发现出现了这么一个错误:
org.apache.ibatis.binding.BindingException: Type interface com.zlq.dao.UserMapper is not known to the MapperRegistry.
在这里插入图片描述
发现mybatis-config.xml没有配置mapper,加入即可
此项配置很重要!如果没有必然报错!

<mappers>
     <mapper resource="com/zlq/dao/userMapper.xml"/>
</mappers>

成功!

最后,我们只需要修改dao中的接口类和配置类,以及我们的测试类,其他的文件都不需要动了!


版权声明:本文为weixin_49149614原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。