IDEA使用maven加载myBatis(保姆级多图)

IDEA使用maven加载myBatis(保姆级多图)

  • 创建工程
  • 创建子模
  • 配置mybatis的maven依赖
  • 写一个Demo
  • 进行测试

保姆级图文全流程配置

文中使用了mybatis官网比较推荐的用法,面向了接口,更方便了操作mybatis,另一种方法这儿就不唠了

创建工程

创建一个新的工程,不使用maven模板
IDEA使用maven加载myBatis(保姆级多图)_第1张图片
填写项目名和GroupId
IDEA使用maven加载myBatis(保姆级多图)_第2张图片
完成后IDEA里已经生成了一些文件和目录,并自动打开了maven的pom.xml文件
IDEA使用maven加载myBatis(保姆级多图)_第3张图片
注意在设置里看一眼是不是自己的maven,别用成了IDEA的maven

IDEA使用maven加载myBatis(保姆级多图)_第4张图片

创建子模

可以删掉src目录,再新建一个子模块,全默认通过
IDEA使用maven加载myBatis(保姆级多图)_第5张图片
创建的子模块已经自动写好了父标签

IDEA使用maven加载myBatis(保姆级多图)_第6张图片

配置mybatis的maven依赖

在mavenDemo的pom.xml文件里写入mybatis,mysql驱动(注意驱动版本要和自己用的数据库对的上)和junit的依赖
可以手动去mvn这个网站去查maven的依赖怎么写,放上连接:https://mvnrepository.com/

	<dependencies>
        
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.7version>
        dependency>

        
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.13version>
        dependency>

        
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.2version>
            <scope>testscope>
        dependency>
    dependencies>

在untitled模块下的资源目录resource下创建mybatis的配置文件:mybatis-config.xml
IDEA使用maven加载myBatis(保姆级多图)_第7张图片
简单的填写一下数据库信息



<configuration
     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://127.0.0.1:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="toor"/>
            dataSource>
        environment>
    environments>
configuration>

到此架子还差亿点点就完事了

写一个Demo

写Demo的时候依然还要搭架子
在src目录下的java文件夹里创建三个包dao、pojo、utils

再utils包下创建一个工具类MyBatisUtilIDEA使用maven加载myBatis(保姆级多图)_第8张图片

package xyz.baochao.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MyBatisUtil {

    //提升SqlSessionFactory作用域
    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 getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

数据库里建一张表一会儿那来做测试

CREATE TABLE users(
	u_id INT(20) PRIMARY KEY,
	u_name char(20),
	u_pwd char(20)
);

INSERT INTO users(u_id,u_name,u_pwd) VALUES
(1,'zs',123456),
(2,'ls',456789),
(3,'ww',789123);

因为mybatis传值的时候是借助了实体类,所以此时应准备一个能和数据库user对应的User类,放在pojo包下

User类里三个成员变量,IDEA自动生成get和set方法,再来个toString方法,构造方法默认无参构造
感人的IDEA,解放了双手,啥时候可以自己写代码就更好了
IDEA使用maven加载myBatis(保姆级多图)_第9张图片

在dao包下再弄个接口,名字叫个UserDao吧,完美了,以后都是面向接口调方法,一个方法解决所有烦恼!

package xyz.baochao.dao;

import xyz.baochao.pojo.User;

import java.util.List;

public interface UserDao {
    //查询所有用户数据
    List<User> getAll();
}

在旁边再键一个UserMapper.xml,以后所有的sql语句都写在这里面了,解耦合!妙啊!




<mapper namespace="xyz.baochao.dao.UserDao">
    
    <select id="getAll" resultType="xyz.baochao.pojo.User">
        select * from users
    select>
mapper>

在mybatis-config.xml文件里写:


    <mappers>
        <mapper resource="xyz/baochao/dao/UserMapper.xml" />
    mappers>

此时的目录结构应该是这样的:
IDEA使用maven加载myBatis(保姆级多图)_第10张图片

在进行测试之前还有一件很重要的事情, 就是maven的资源过滤!!!
把两个pom.xml文件全部配置上去

	<build>
        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>truefiltering>
            resource>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>truefiltering>
            resource>
        resources>
    build>

好了,此时全部搭建完毕了,测试测试走起来!

进行测试

在测试包下新建测试类,包名和上面java文件夹下相同,类名就叫UserDaoTest吧,方便管理

IDEA使用maven加载myBatis(保姆级多图)_第11张图片

package xyz.baochao.dao;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import xyz.baochao.pojo.User;
import xyz.baochao.utils.MyBatisUtil;

import java.util.List;

public class UserDaoTest {
    @Test
    public void test(){
        //使用工具类获取SqlSession
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        //把接口加载进来
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        //取出数据库中的所有数据放入集合
        List<User> userList = userDao.getAll();
        //遍历集合输出内容
        for (User user : userList) {
            System.out.println("user = " + user);
        }
        //关闭SqlSession
        sqlSession.close();
    }
}

测试走一下:

第一次居然报错了,报了ExceptionInInitializerError,检查了一下,资源过滤没错,正当一筹莫展的时候突然发现,在xml配置文件里我写了中文注释,再看字符编码:


好家伙,字符编码的问题,去掉utf-8中间的“-”,就是这个小横杠


改完走一波测试!

IDEA使用maven加载myBatis(保姆级多图)_第12张图片

一切正常,搭建过程看似麻烦,但是实际上比起jdbc手动撸代码不知道舒服了多少倍,长出一口气对IDEA说了句:“IDEA啊,你已经是一个成熟的工具了,应该会自己去改异常了……”

你可能感兴趣的:(java,maven,mybatis,mysql)