mybatis配置过程的基本步骤

用于记录mybatis学习过程

推荐使用idea

mybatis官方文档,步骤基于文档
相关笔记:

Spring整合Mybatis方式一

一、首先创建一个maven项目

二、配置pom.xml文件

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>com.wen</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatis-01</module>
    </modules>

    <!--导入依赖-->
    <dependencies>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version><!--这里mysql驱动器的版本需要和你本地的mysql版本相匹配,不然会报错-->
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version><!--根据所需要的指定-->
        </dependency>
        <!--junit,用于测试用的工具类,后续的@Test-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version><!--根据所需要的指定-->
        </dependency>
    </dependencies>
<!--这里比较关键,为的是防止资源无法被导出的问题,识别xml配置文件-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resource</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>

三、在resources文件夹下配置mybatis的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"><!--这里可以有多个环境,可根据id来选择,上面有默认-->
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED"><!--这里的参数,池子,不需要往复的创建-->
        <property name="driver" value="${driver}"/><!--这里使用${driver},后续可以再通过配置文件来读取数据!!-->
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

对比参照

<?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"></transactionManager><!--使用的是jdbc驱动器-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/><!--这里就使用jdbc的驱动-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=true"/><!--url配置,根据实际需要填写-->
                <property name="username" value="root"/><!--用户名-->
                <property name="password" value="root"/><!--密码-->
            </dataSource>
        </environment>
    </environments>
    <!--这里是重点!每配置一个xml文件就需要将其注册到mapper中!!不然无法找到文件-->
    <mappers>
        <mapper resource="com/wen/dao/UserMapper.xml"></mapper>
    </mappers>
</configuration>

通过db.properties文件来配置数据库信息的方式!
在这里插入图片描述
这里不需要log4j.properties,下文以注释,需要日志时再自行配置
与上面进行对比

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>
<!--    引入外部配置文件-->
    <properties resource="db.properties"></properties>

    <settings>
<!-- 日志!-->
<!--        <setting name="logImpl" value="STDOUT_LOGGING"/>-->
        <!--<setting name="logImpl" value="LOG4J"/>-->
    </settings>
    
    <typeAliases>
<!--        <typeAlias type="com.wen.pojo.User" alias="User"></typeAlias>-->
        <package name="com.wen.pojo"/>
    </typeAliases>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/wen/dao/UserMapper.xml"></mapper>
    </mappers>
</configuration>

db.properties:

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8
username = root
password = root

这样就只用更改db.properties中的数据库配置信息就可以了,而不需要去更改mybatis-config.xml文件中的内容

四、建立一个简单的测试

我的文件目录:
在这里插入图片描述
dao层: dao层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个dao一定是和数据库的某一张表相对应的,其中封装了增删改查基本操作,属于接口类,建立一个dao就需要建立一个相应的xml配置文件。
pojo层: 俗称对象层,用于存放具体需要操作和返回的对象,与dao层中的相应dao文件相对应。
utils层: 存放工具类
1.MybatisUtils

扫描二维码关注公众号,回复: 15195054 查看本文章
package com.wen.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;
//sqlSessionFactory --->sqlSession
public class MybatisUtils {
    
    
    private static SqlSessionFactory sqlSessionFactory;//提升作用域
    static {
    
    
        try {
    
    
//            使用Mybatis第一步:获取SQLSessionFactory对象
            String resource = "mybatis-config.xml";//获取的mybatis的配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
    
    
        return sqlSessionFactory.openSession();
    }
}

2.UserDao

package com.wen.dao;

import com.wen.pojo.User;

import java.util.List;

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

3.UserMapper.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.wen.dao.UserDao"><!--这里namespace的路径要和UserDao相对应-->
    <select id="getUserList" resultType="com.wen.pojo.User"><!--resultType可以直接返回给出的返回值类型,比如StringintMap,等等,其中返回List也是将返回类型定义为Map,然后mybatis会自动将这些map放在一个List中,resultType还可以是一个对象-->
    <!--id是方法的名字-->
        select *from mybatis.user
    </select>
</mapper>

4.User

package com.wen.pojo;

//实体类
public class User {
    
    
//这里定义变量和数据库中表格一样
    private int id;
    private String name;
    private String pwd;

    public User() {
    
    
    }

    public User(int id, String name, String pwd) {
    
    
        this.id = id;
        this.name = name;
        this.pwd = 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 + '\'' +
                '}';
    }
}

5.mysql表
在这里插入图片描述

在这里插入图片描述
6.测试类:
在这里插入图片描述

package com.wen.dao;

import com.wen.pojo.User;
import com.wen.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;

public class UserDaoTest {
    
    
    @Test
    public void getUserLike(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserLike("%李%");
        for (User user:userList){
    
    
            System.out.println(user);
        }
        sqlSession.close();
    }
    @Test
    public void test(){
    
    
//        1.获得sqlSession
        SqlSession sqlSession = MybatisUtils.getSqlSession();
//        2.执行sql,方式一
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        for (User user: userList){
    
    
            System.out.println(user);
        }
//        3.关闭SqlSession
        sqlSession.close();
    }
    @Test
    public void getUserById(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao mapper = sqlSession.getMapper(UserDao.class);
        User userById = mapper.getUserById(1);
        System.out.println(userById);
        sqlSession.close();
    }
    @Test
    public void getUserById2(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        HashMap<String, Object> map = new HashMap<String,Object>();
        map.put("id",1);
        map.put("name","狂神");
        User userById2 = mapper.getUserById2(map);
        System.out.println(userById2);
        sqlSession.close();
    }
//增删改需要提交事物!!
    @Test
    public void addUser(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        int res  = mapper.addUser(new User(4,"哈哈哈", "123"));
        if (res>0){
    
    
            System.out.println("插入成功");
        }
//        提交事物
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void addUser2(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);

//        map
        HashMap<String, Object> map = new HashMap<>();
        map.put("userId",5);
        map.put("userName","hello");
        map.put("userPwd","121212");
        mapper.addUser2(map);
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void updateUser(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao mapper = sqlSession.getMapper(UserDao.class);
        int res = mapper.updateUser(new User(4,"呵呵","666"));
        if (res>0){
    
    
            System.out.println("更新成功!!");
        }
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void deleteUser(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        int res = mapper.deleteUser(4);
        if (res>0){
    
    
            System.out.println("删除成功!");
        }
        sqlSession.commit();
        sqlSession.close();
    }
}

7.执行结果
在这里插入图片描述

Talk is cheap,show me the code! —— 薪火工作室!

猜你喜欢

转载自blog.csdn.net/qq_52050769/article/details/118672486
今日推荐