mybatis笔记01——初始配置

JavaEE三层架构:表现层 (负责与用户的交互,通常实现了用户界面)、业务逻辑层 (处理核心业务规则和逻辑,是应用程序的"心脏"。)、数据访问层(负责与数据源(如数据库)进行交互,包括数据的存储、检索和操作)。

mybatis环境配置(基于maven)

pom.xml文件必须导入以下依赖

XML 复制代码
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.16</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
    </dependencies>

resources文件夹下新建名为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">

在最上方还引入了一个叫做DTD(文档类型定义)的东西,它提前帮助我们规定了一些标签以及这些标签应该具有哪些属性,这些标签是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">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///{数据库名称}?useSSL=false/dqlsearch"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="TestMapper.xml""/>
    </mappers>
</configuration>

接下来就是具体配置mybatis连接数据库的代码了

  • 环境(environments)里可以加多个environment,即连接不同的数据库,上面的default=" "里选择要用到的那个数据库。(可以连接不同的数据库来实现测试的效果
  • <transactionManager type="JDBC"/>:事务管理器我们这里直接使用JDBC即可
  • 数据源(dataSource)中配置就是驱动、连接地址(最后是要连接的数据库名称)、用户名和密码

之后在resources文件夹里面创建TestMapper.xml

在TestMapper.xml文件里写入

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="testMapper">

</mapper>

mapper继续看下面的说明

由于要获取student这张表里的学生对象数据,那么就在包里新建学生这个类

java 复制代码
@Data // 加上这个注解,就可以不写get set方法
public class student {
    int id;
    String name;
    int gander;
    ......
    //构造器和get set方法
}

之后在TestMapper.xml里配置sql映射

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="testMapper">
    <select id="SelectAllStudent" resultType="com.test.student">
        select * from studentscore;
    </select>
</mapper>

select标签里的id是该sql语句的名字,resultType是sql查询返回的类型

之后再在mybatis_config.xml里添加mappers标签(要在environments之后)

XML 复制代码
<typeAliases>  
    <package name="com.itheima.pojo"/>  
</typeAliases>
  • mapper.xml文件中
XML 复制代码
<configuration>
    ...
    <mappers>
        <mapper resource="TestMapper.xml"/>
    </mappers>
</configuration>

之后就可以在java文件里通过代码查询数据库了

java 复制代码
package com.test;

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;
import java.util.List;

public class mybatistest {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        // 将mybatis-config.xml文件传入输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取到了数据库对象
        // 对数据库对象执行sql语句
        List<User> userList = sqlSession.selectList("test.selectAll");
        System.out.println(userList);
        // 关闭
        sqlSession.close();
    }
}
相关推荐
曹牧2 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
ouliten3 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
爬山算法3 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7253 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄3 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿3 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds3 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹3 小时前
【Java基础】多态 | 打卡day2
java·开发语言