Mybatis环境搭建

1、开发环境

IDE:IntelliJ IDEA 2022.2.1 (Ultimate Edition)

构建工具:maven 3.6.1

MySQL版本:MySQL 5.7

MyBatis版本:MyBatis 3.5.14

2、工程创建

创建一个Maven工程giser-java-mybatis-demo

基础依赖如下:

    	<!-- 设置打包方式为jar -->
    	<packaging>jar</packaging>
    
        <properties>
            <maven.compiler.source>17</maven.compiler.source>
            <maven.compiler.target>17</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
          	<!-- mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.14</version>
            </dependency>
          	<!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.33</version>
            </dependency>
          	<!-- junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
            <!-- log4j日志 -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>

3、配置文件

主要用来配置数据库连接环境及Mybatis全局配置信息。

核心配置文件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">
    <!--
    核心配置文件中的标签必须按照固定的顺序:
    properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?
    -->
    <configuration>
        <!--引入properties文件,此时就可以${属性名}的方式访问属性值-->
        <properties resource="jdbc.properties"></properties>
      
        <!--
            environments:设置多个连接数据库的环境
            属性: default:设置默认使用的环境的id
        -->
        <environments default="dev">
            <!--
                设置连接数据库的环境
                    属性:id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的id,表示默认使用的环境
            -->
            <environment id="dev">
                <!--
                    transactionManager:设置事务管理方式
                        属性:
                        type:设置事务管理方式,type="JDBC|MANAGED"
                        type="JDBC":设置当前环境的事务管理都必须手动处理
                        type="MANAGED":设置事务被管理,例如spring中的AOP
                -->
                <transactionManager type="JDBC"/>
                <!--
                    dataSource:设置数据源
                        属性:
                        type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"
                        type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从
                        缓存中直接获取,不需要重新创建
                        type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建
                        type="JNDI":调用上下文中的数据源
                -->
                <dataSource type="POOLED">
                    <!--设置驱动类的全类名-->
                    <property name="driver" value="${jdbc.driver}"/>
                    <!--设置连接数据库的连接地址-->
                    <property name="url" value="${jdbc.url}"/>
                    <!--设置连接数据库的用户名-->
                    <property name="username" value="${jdbc.username}"/>
                    <!--设置连接数据库的密码-->
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
    
            </environment>
        </environments>
        <!--引入映射文件-->
        <mappers>
            <!--加载sql映射文件-->
            <!--<mapper resource="mappers/UserMapper.xml"/>-->
    
            <!--Mapper代理方式-->
            <!--
                以包为单位,将包下所有的映射文件引入核心配置文件
                注意:此方式必须保证mapper接口和mapper映射文件必须在相同的包下
            -->
            <package name="com.giser.mapper"/>
        </mappers>
    </configuration>

数据库配置文件jdbc.properties

    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/db_mybatis
    jdbc.username=root
    jdbc.password=root

4、创建Mapper接口及映射文件

映射文件命名规则一般为表所对应的实体类的类名+Mapper.xml

例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml

注意: 接口文件和映射文件一般放在相同路径下,如接口在java文件的com.giser.mapper包路径下,其对应的xml文件在resources文件的相同路径下,即com.giser.mapper路径下。

创建资源文件多级路径,路径之间用/分割;创建java文件多级包路径,路径之间用.分割

  • UserMapper.java接口文件

    /**
     * @author giserDev
     * @description
     * @date 2023-11-25 00:03:10
     */
    public interface UserMapper {
          
          /**
           * 查询用户信息
           */
          User selectUser();
    
          /**
           * 查询用户信息
           */
          List<User> selectUserList();
    
    }
  • 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.giser.mapper.UserMapper">
    
        <select id="selectUser" resultType="com.giser.pojo.user.User">
            select * from t_user where id = '1';
        </select>
    
        <select id="selectUserList" resultType="com.giser.pojo.user.User">
            select * from t_user
        </select>
    
    </mapper>

5、功能测试

    package com.giser.mapper;
    
    import com.giser.pojo.user.User;
    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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    /**
     * @author giserDev
     * @description
     * @date 2023-11-25 00:19:54
     */
    public class UserMapperTest {
    
        @Test
        public void testUserMapper() throws Exception {
            // 加载核心配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            // 创建SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            // 创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            // 创建SqlSession
    //        SqlSession sqlSession = sqlSessionFactory.openSession();
            // 自动提交
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    /*        User user = userMapper.selectUser();
            System.out.println(user);*/
            List<User> userList = userMapper.selectUserList();
            System.out.println(userList);
        }
    
    }

6、日志功能

  • 基础依赖
    <!-- log4j日志 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
  • 详细配置

log4j.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
        <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
            <param name="Encoding" value="UTF-8" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
            </layout>
        </appender>
        <logger name="java.sql">
            <level value="debug" />
        </logger>
        <logger name="org.apache.ibatis">
            <level value="info" />
        </logger>
        <root>
            <level value="debug" />
            <appender-ref ref="STDOUT" />
        </root>
    </log4j:configuration>
  • 日志信息
      DEBUG 12-09 18:05:47,530 ==>  Preparing: select * from t_user (BaseJdbcLogger.java:135) 
      DEBUG 12-09 18:05:47,531 ==> Parameters:  (BaseJdbcLogger.java:135) 
      DEBUG 12-09 18:05:47,755 <==      Total: 7 (BaseJdbcLogger.java:135) 

7、配置文件模板

在IntelliJ IDEA中,通过File-Settings或通过快捷键Ctrl+Alt+S打开Settings面板,在Editor-File and Code Templates界面,在Files页签添加文件模板,设置Name、Extension,并将文件模板内容粘贴到内容框即可。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/231949.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Stm32CubeIDE的printf打印浮点数的问题的一点看法

由于重新巩固一下18B20 的使用&#xff0c;重新琢磨了一下&#xff0c;本想printf温度这个浮点数的&#xff0c;后面发现有问题&#xff0c;打印后程序卡死了。 还发现了一个问题&#xff0c;打开这个打印浮点数功能&#xff0c;程序会大很多&#xff1a; 打开的方法是菜单》Pr…

HBuilderX

HBuilderX.3.98.2023112510 HBuilderX-高效极客技巧 HBuilderX的项目结构&#xff1a; vue-cli的项目结构&#xff1a; HBuilderX的项目要脱离该工具用vue-cli启动的话&#xff0c;要把源代码拷贝到src里面&#xff0c;把项目结构修改后才可以启动完成。【知道我为什么很讨厌维…

2023最新八股文前端面试题

第一章 Css 1.说一下CSS的盒模型。 在HTML页面中的所有元素都可以看成是一个盒子盒子的组成:内容content、内边距padding、边框border、外边距margin盒模型的类型: 标准盒模型 margin border padding content IE盒模型 margin content(border padding) 控制盒模型的模式…

Python Reflex框架全攻略:手把手教你打造个性化全栈应用!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Reflex框架是一款专注于全栈开发的现代 JavaScript 框架&#xff0c;它强调响应式编程和简化复杂性&#xff0c;为开发者提供了构建动态且高效的全栈应用的工具。 Reflex框架是为了解决传统全栈开发中的一些挑战…

关于linux开机自启动

1、系统启动流程 2、 init、 inittab、 init.d、 rcx.d /etc/inittab是Linux系统中的一个配置文件&#xff0c;用于定义系统的运行级别和相应的操作。其语法格式如下&#xff1a; 标签&#xff1a;运行级别&#xff1a;操作&#xff1a;进程 label:runlevel:action:process下面…

C# 任务并行类库Parallel调用示例

写在前面 Task Parallel Library 是微软.NET框架基础类库&#xff08;BCL&#xff09;中的一个&#xff0c;主要目的是为了简化并行编程&#xff0c;可以实现在不同的处理器上并行处理不同任务&#xff0c;以提升运行效率。Parallel常用的方法有For/ForEach/Invoke三个静态方法…

Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

报错&#xff1a; OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performan…

SpringSecurity6 | 自定义认证规则

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

docker-compose安装教程

1.确认docker-compose是否安装 docker-compose -v如上图所示表示未安装&#xff0c;需要安装。 如上图所示表示已经安装&#xff0c;不需要再安装&#xff0c;如果觉得版本低想升级&#xff0c;也可以继续安装。 2.离线安装 下载docker-compose安装包&#xff0c;上传到服务…

Shell数组函数:数组——数组和循环(四)

使用数组统计&#xff0c;用户shell的类型和数量 一、脚本编辑 [root192 ~]# vim shell.sh #!/bin/bash declare -A shells while read ii dotypeecho $ii | awk -F: {print $7}let shells[$type] done < /etc/passwdfor i in ${!shells[]} doecho "$i: ${shells[$i]…

求Sn=m+mm+mmm+...+mm..mmm(有n个m)的值

题目&#xff1a;求 的值 一、做这个题我们其实可以直接一个for求解&#xff1a; a,aa,aaa...我们很容易知道它们后一项与前一项的关系就是&#xff1b; public static void Sum(int m,int n){long sum 0L;long curAn 0;for (int i 0; i < n; i){curAn m 10* curAn;/…

MATLAB离线附加功能包下载与安装教程

MATLAB离线附加功能包下载与安装教程 本文介绍如何下载与安装MATLAB离线附加功能包,便于大家更加高效的使用MATLAB。 目录 MATLAB离线附加功能包下载与安装教程一、下载1. 获取MATLAB试用版账号2. 使用MATLAB Online搜索所需要的资源包3. 下载所需要的资源包二、安装由于不是…

uniapp 微信小程序连接蓝牙卡死 uni.onNeedPrivacyAuthorization

解决方法&#xff0c;需要同意隐私保护协议&#xff0c;否则不能开启蓝牙权限和定位权限&#xff0c;会导致连接蓝牙失败

2024考研数学二备考历程

GoodNotesGoodNotes apphttps://share.goodnotes.com/s/bhsraJMZ6OJwuYJb3OWnzP

【教3妹学编程-算法题】需要添加的硬币的最小数量

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到新闻&#xff0c; 有人中了2.2亿彩票大奖&#xff01; 2哥 : 看到了&#xff0c;2.2亿啊&#xff0c; 一生一世也花不完。 3妹&#xff1a;为啥我就中不了呢&#xff0c;不开心呀不开心。 2哥 : 得了吧&#xff0c;你又不买彩票&…

pycharm debug的时候变量显示不出来,一直Collecting data...问题解决

问题描述&#xff1a; 如图所示&#xff1a;一直加载不出来变量&#xff0c;显示Collecting data 解决办法&#xff1a; 在setting中给下图中的选项打勾 这下就可以了。 应该是调试时候有线程冲突&#xff0c;具体我也不太懂。

TP5上传图片压缩尺寸

图片上传&#xff0c;最简单的就是&#xff0c; 方法一&#xff1a; 修改上传限制&#xff0c;不让上传大于多少多少的图片 改一下size即可&#xff0c;默认单位是B换算成M还需要除以两次1024 方法二&#xff1a; 对上传的图片进行缩放&#xff0c;此办法网上找了不少的代码…

C#基础面试题集

C#基础 1. 简述值类型和引用类型有什么区别2. C# String类型比 stringBuilder 类型的优势是什么?3.面向对象的三大特点4.请简述private&#xff0c;public&#xff0c;protected&#xff0c;internal的区别5.结构体和类6.请描述Interface与抽象类之间的不同7.在类的构造函数前…

智能优化算法应用:基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鲸鱼算法4.实验参数设定5.算法结果6.参考文献7.MA…

Orcal数据库Schema理解、表分区理解

目录 1 Schema1.1 Orcal数据库示例1.2 MySQL数据库示例 2 Orcal表分区2.1 创建表分区2.2 查看表分区2.3 查看指定分区数据 此前未了解过Schema的概念&#xff0c;仅知道Orcal数据库比较侧重这个概念&#xff0c;搜遍全网都&#xff0c;都是啰哩吧嗦的搬抄定义&#xff0c;特此在…