mybatis与数据库连接过程

2023-11-15

菜鸟发文 请大神多多指导

1.准被一个maven项目

2.先导入jar包

3.配置mybatis核心文件

4.把连接数据库的配置项抽离出来

5.编写实体类

6.编写接口

7.编写mapper映射文件

8.把相同SQL session 方法抽离 进行封装

9.配置打印文件log4j

10最后进行测试



1.配置所需的jar包

也就是pom文件

<?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>com.bdqn</groupId>
    <artifactId>BasicDao01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--导入jar包-->
    <dependencies>
        <!--导入mybatis包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <!--导入MySQL包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.28</version>
        </dependency>
        <!--导入测试包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <!--导入log4j包-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
    </dependencies>
    <!--扫描所有.xml文件-->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>

                    <include>**/*.xml</include>

2.配置核心文件

取名为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文件-->
    <properties resource="database.properties"></properties>
<!--修改mybatis运行时的行为方式-->
    <settings>
        <!--配置log4j日志-->
    <setting name="logImpl" value="LOG4J"></setting>
    </settings>
    <!--配置别名-->
    <typeAliases>
        <package name="com.bdqn.entity"></package>
    </typeAliases>
   <!--配置运行时环境-->
    <environments default="development">
        <environment id="development">
            <!--配置事务管理器-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>
    <!--配置映射文件 mappers映射器-->
    <mappers>
      <mapper resource="com/bdqn/dao/UserMapper.xml"></mapper>
    </mappers>

</configuration>


3.把所需要的连接数据库的配置抽离出来 

取名为 database.properties

记住 在设置密码时一定要注意 要加.jdbc什么

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/tcmp
jdbc.username=root
jdbc.password=admin


4.进行实体类的编写

我以用户的实体为例子

在这里我取名为User

public class User {
    private Integer id;
    private String userName,password,nickName;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                ", nickName='" + nickName + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
}

5.进行接口绑定的编写


我取名为UserMapper

注意这里我用了求和方法和查询所有方法

public interface UserMapper {
    /*count 求和方法接口*/
    public Integer queryCountUser();
    /*查询所有用户方法接口*/
    public List<User>queryAllUsers();
}


6.进行mapper映射文件的编写

我取名为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文件的路径没有.xml-->
<mapper namespace="com.bdqn.dao.UserMapper">
    <resultMap id="UserMap" type="User">
        <id property="id" column="id"></id>
        <result property="userName" column="user_name"></result>
        <result property="nickName" column="nick_name"></result>
    </resultMap>
    <!--count 求和方法sql语句返回类型为Integer类型-->
    <select id="queryCountUser" resultType="Integer">
        SELECT COUNT(1) FROM t_user
    </select>
    <!--查询所有用户方法 因为表中的列名和实体类的名字不一样所以需要映射 用到result map 返回为一个泛型list集合-->
    <select id="queryAllUsers" resultMap="UserMap" >
SELECT * FROM t_user
    </select>
</mapper>


7.把所需要的SQL session抽离封装单独起一个工具类以便我们在测试时进行很好的调用

这里我取名为 MyBatisUtil类

public class MybatisUtil {
    /*声明工厂*/
    private static SqlSessionFactory sqlSessionFactory;
    /*静态代码块只执行一次*/
      static{
          String source="mybatis-config.xml";
          /*获取输入流*/
        try {
            InputStream inputStream= Resources.getResourceAsStream(source);
            /*创建一个工厂 sqlSessionFactory*/
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*打开一个SQL session*/
    public static SqlSession createSqlSession (){
      return sqlSessionFactory.openSession();
    }
    /*关闭连接释放资源*/
    public void close(SqlSession sqlSession){
        if (sqlSession!=null){
            sqlSession.close();
        }
    }
}


8.进行测试    

public class TestUser {

    /*测试求和方法*/
    private SqlSession sqlSession=null;
    Integer count;
    @Test
    public void queryCount(){
        sqlSession= MybatisUtil.createSqlSession();
        count=sqlSession.getMapper(UserMapper.class).queryCountUser();
        if (count!=null){
            System.out.println(count);
        }
    }
    /*测试查询所有用户方法*/
    @Test
    public void queryAllUsers(){
        List<User>list;
        sqlSession=MybatisUtil.createSqlSession();
        list=sqlSession.getMapper(UserMapper.class).queryAllUsers();
        if (list!=null){
            for (User user : list) {
                System.out.println(user);
            }
        }
    }
}

9.配置log4j打印文件

log4j.rootLogger=DEBUG,CONSOLE,file
log4j.logger.cn.smbms.dao=debug
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n

log4j.logger.com.opensymphony.xwork2=error  

 10.最后进行测试











本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis与数据库连接过程 的相关文章

随机推荐

  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • A* 算法

    简单描述一下A 原理 两个集合 OpenList 可到达的格子 CloseList 已到达的格子 一个公式 F G H 解释一下 F G H是格子的3个属性 G 从起点走到当前格子的成本 也就是已经花费了多少步 H 在不考虑障碍的情况下 从
  • Spring Cloud(八):使用Spring Cloud Bus来实现配置动态更新

    使用Spring Cloud Config我们能实现服务配置的集中化管理 在服务启动时从Config Server获取需要的配置属性 但如果在服务运行过程中 我们需要将某个配置属性进行修改 比如将验证码的失效时间从五分钟调整为十分钟 如何将
  • 使用VS Code进行Vue模板编程的设置方法

    Vue js是一种流行的JavaScript框架 用于构建前端应用程序 在VS Code中进行Vue模板编程时 可以通过一些扩展和配置来提高开发效率 本文将介绍如何设置VS Code以优化Vue模板编程体验 安装Vue扩展 首先 我们需要安
  • vscode 统计代码行数的插件

    1 安装插件 VS Code Counter 2 安装好之后 shift ctrl p 调出命令行 选择合适的命令直接统计 一般点击 Count lines in directory 然后确认要统计的目录即可 3 会以统计时间生成统计文件夹
  • VS Code + Markdown Preview Enhanced 出现 mermaid预览流程图看不见线条问题的解决方案

    VS Code mermaid预览流程图看不见线条问题的解决方案 使用mermaid插件可以在Markdown文档中插入漂亮的流程图 但是VS code安装上Markdown Preview Enhanced插件之后 看到的却是这样的效果
  • Java之集合的排序方式(Comparable和Comparator的基本使用以及区别)

    文章目录 一 Comparable接口 1 代码示例 2 运行结果 3 案例分析 二 Comparator接口 1 代码示例 2 运行结果 3 案例分析 三 Comparable和Comparator对比 1 接口位置 2 实现方式 3 排
  • SpringBoot + Mybatis 多模块( module )项目搭建教程

    作者 枫本非凡 www cnblogs com orzlin p 9717399 html 一 前言 最近公司项目准备开始重构 框架选定为SpringBoot Mybatis 本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过
  • 8k Byte , 8bit的ROM存储器,其地址线和数据线各需要多少根?

    总共容量为810248bits 2 16bits 因此其地址线需要16根 因为是8bit的ROM存储器 因此数据线需要8根
  • 使用ggplot2包在R语言中抑制数据轴上的科学计数法

    使用ggplot2包在R语言中抑制数据轴上的科学计数法 在数据可视化领域 ggplot2是R语言中最流行和强大的包之一 它提供了丰富的功能和灵活性 使我们能够创建出美观 清晰的图形来展示数据 其中一个常见的问题是 当我们使用ggplot2绘
  • 【自然语言处理】隐马尔可夫模型【Ⅵ】精度问题

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成六篇博客 自然语言处理 隐马尔可夫模型 马尔可夫模型 自然语言处理 隐马尔可夫模型 隐马尔科夫模型概述 自然语言处理 隐马尔可夫模型 估计问题 自然语言处理 隐马尔
  • 非递减排列和非递增排列的定义

    递增排列 1 2 3 4 5 6 7 8 递减排列 8 7 6 5 4 3 2 1 非递减排列 1 2 3 4 5 6 6 7 8 8 非递增排列 9 8 8 7 6 5 2 2 1
  • 小白学python-数据清洗

    数据清洗 赔率 公路堵车模型的概念及应用 主成分分析PCA 新的的特征组合 车辆数据描述 one hot编码会使特征值大量增加 维度变高视情况而定 Logistic回归 AUC 曲线下的面积 求取素数以及赔率的代码 import opera
  • web service概念、架构及相关知识

    一 WebService的定义 WebService有好几种定义 W3C组织对其定义 WebService是一个软件系统 为了支持跨网络的机器间互操作交互而设计 WebService通常被定义为一组模块化的API 我们可以通过网络进行调用
  • 太原理工大学19年Java试题复习笔计

    19年Java复习题 1 为使一个名为Example的public类成功编译 需至少满足以下哪个条件 2 0分 A Example类中必须定义一个正确的main函数 B Example类中必须定义在 Example java源文件中 C E
  • sklearn 神经网络

    sklearn 神经网络 url https blog csdn net luanpeng825485697 article details 79064657 url sklearn 神经网络 多层感知器的优点 可以学习得到非线性模型 使用
  • 雷军发布会刚结束,就能写出上万字原创文章!

    前言 看完雷军演讲会之后你有没有看到过很多文章 成千上万个字的原创文章 瞬间就出现了 这是一个一个字敲的吗 当然不是 是AI 话不多说直接上教程 把雷军的演讲整理到笔记中 可以是md格式 word格式等等 复制粘贴即可 打开网站 smart
  • vmware workstation14连网

    记录一下手残的过程 1 选择NAT形式的连接 2 在桌面的右上角有个圆圈 右击这个图标 会显示一个有线连接 默认是关闭的 3 所以设置成连接状态 4 右击有线连接 进行网络配置 5 所有都配置成自动获取
  • MybatisPlus多表连接查询

    mybatis plus作为mybatis的增强工具 它的出现极大的简化了开发中的数据库操作 但是长久以来 它的联表查询能力一直被大家所诟病 一旦遇到left join或right join的左右连接 你还是得老老实实的打开xml文件 手写
  • mybatis与数据库连接过程

    菜鸟发文 请大神多多指导 1 准被一个maven项目 2 先导入jar包 3 配置mybatis核心文件 4 把连接数据库的配置项抽离出来 5 编写实体类 6 编写接口 7 编写mapper映射文件 8 把相同SQL session 方法抽