2.第一个MyBatis程序

 

一、环境

1 MySQL 5.1.46,maven-3.5.0,IDEA,jdk 8+

二、知识储备

 

Java基础,Mysql,JDBC,maven,Junit

 

三、创建和配置项目

1、先创建一个maven空项目(普普通通的就ok,不用选webapp)

 

 下一步我按照我习惯的命名方式来命名

 

 这是我们的文件目录

 

 2.在pom.xml中配置jar包(导入依赖)(上网复制就行)

 

 

<!--导入依赖-->
    <dependencies>
        <!--mysql驱动-->
        <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.2</version>
        </dependency>

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

    <!--在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>
View Code

3.创建一个数据库并进行连接

创建一个数据库,这里我用navicat创建

 

 

这是创建表代码

CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `pwd` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
View Code

ok,数据库和表创建完了,现在我们准备把idea和数据库连接起来

 

 

 

 然后输入自己的User和Password,可以Test Connection测试一下能否连接,如果不能,看一下URL和用户名密码是否正确

 

 

 4.创建Mybatis核心配置文件

MyBatis 核心配置文件( mybatis-config.xml),该文件配置了 MyBatis 的一些全局信息,包含数据库连接信息和 MyBatis 运行时所需的各种特性,以及设置和影响 MyBatis 行为的一些属性。

右键resourse点击New -> File 创建核心配置文件mybatis-config.xml(注意后缀不能丢)

 

 


编写代码如下:

 

<!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.jdbc.Driver"/>
                <!--驱动-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="120398"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一个Mapper.xml都需要在Mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/zou/dao/UserMapper.xml"/>
    </mappers>
</configuration>
View Code

 

 

 注意配置文件中的URL,用户名,密码写自己的     url在连接数据库时能找到

 

 

5、编写MybatisUtils工具类

MybatisUtils类似于JDBCUtils,下图中的类和包都可以先创建好,dao包中的文件名字最好一致,不然后面可能会出问题

 

Mybatis的真正强大,在于她对SQL的映射,这也是她吸引人的地方。实现相同的功能,她要比直接使用JDBC省去95%的代码量。而且将SQL语句独立在Java代码之外,为程序的修改和纠错提供了更大的灵活性,可以直接修改SQL语句,而无需重新编译Java程序。

SQL映射文件也是XML格式,其顶级元素有以下几个:

  • select - 映射sql查询语句
  • insert - 映射sql插入语句
  • update - 映射sql更新语句
  • delete - 映射sql删除语句
  • sql - 就像程序中可以复用的函数一样,这个元素下放置可以被其他语句重复引用的sql语句
  • resultMap - 用来描述如何从数据库查询结果集中来加载对象
  • cache - 给定命名空间的缓存配置
  • cache-ref - 其他命名空间缓存配置引用

Mybatis-config.xml配置xml文件和接口关联。

1 <!--namespace务必和接口的全类名一致 -->
2 <mapper namespace="com.zou.dao/UserMapper.xml">

 

给utils包中的MybatisUtil类中添加如下代码:

 

public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

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

    //获取SqlSession连接
    public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }

}
View Code

 

 

ok,工具类写完了

6、编写User实体类

在User类中编写。代码如下

package com.zou.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;
    }


    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

}
View Code

 

 

 

7、编写UserMapper接口类

在dao包中的UserMapper中添加代码:

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

 

 

 

8、编写UserMapper.xml文件

select中的就是我们sql语句,后面要增删改都是在UserMapper.xml中修改
namespace十分重要!不能写错!

这里我之前连的数据库连错了,我应该连这个红框的

 

 

<?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接口-->
<mapper namespace="com.zou.dao.UserMapper">

    <!--查询语句-->
    <select id="getUserList" resultType="com.zou.pojo.User">
        select * from mybatis.user;  <!--我的数据库名字叫mybatis表是user-->
    </select>
</mapper>
View Code

 

 

 

9、编写UserMapperTest测试类

 

import com.zou.dao.UserMapper;
import com.zou.pojo.User;
import com.zou.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {
    //查询所有用户和密码
    @Test
    public void test(){
        //通过MybatisUtils工具类获得sqlSession对象
        SqlSession sqlSession = MybatisUtils.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.getUserList();

        //遍历user表
        for (User user : userList) {
            System.out.println(user);
        }

        //关闭sqlSession
        sqlSession.close();
    }
}
View Code

 

 

结果如下:

报错了·····

 

 

 把mybatis-config.xml中的url改成这个  useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false

 

解决后变成这样:

 

 

 经过询问群内大佬:

 

 

 

 

 依旧是喜欢大力的一天

 

 

posted @ 2020-02-20 22:20  涂妖教  阅读(187)  评论(0)    收藏  举报