Mybatis框架实现对数据库中User表的按编号查询

文章目录

  • 前言
  • 一、新建项目并通过Maven导入该项目相关数据包
    • (一)在IDEA中新建项目
    • (二)配置Maven的plu插件
    • (三)通过Maven导入该项目相关包
  • 二、数据库中建立User表并建立相对应的User类
    • (一)在数据库中建立user表
    • (二)在项目中建立User类(该类名字与表名对应)
  • 三、Mybatis连接SQL
    • (一)配置Mybatis全局配置文件mybatis-config.xml
    • (二)配置jdbc.properties文件提供名值对
    • (三)配置Mybatis全局配置文件的映射文件UserMapper.xml
  • 四、使用log4j日志框架(可选)
  • 五、建立UserDao接口规范对User表的操作
  • 六、建立UserDao接口的实现类UserDaoImpl
  • 七、建立UserDaoImplTest类进行测试(实现按编号进行查询)
  • 总结(附项目源码)


前言

提示:本篇文章内容,实现按编号对User表中的数据进行查询,后续的增删改会在接下来的其他文章中体现。
以下为本文整体框架,读者可整体阅读,也可在目录中单独选择章节阅读
Mybatis框架实现对数据库中User表的按编号查询_第1张图片

一、新建项目并通过Maven导入该项目相关数据包

(一)在IDEA中新建项目

点击project新建项目
Mybatis框架实现对数据库中User表的按编号查询_第2张图片
按照下图所示进行操作
Mybatis框架实现对数据库中User表的按编号查询_第3张图片
Mybatis框架实现对数据库中User表的按编号查询_第4张图片
设置好后点击右下角Finish,即成功新建项目。
Mybatis框架实现对数据库中User表的按编号查询_第5张图片
项目创建完毕后,在界面右下角,弹出提示,点击红框处,允许该项目Maven自动导入相关包。

(二)配置Maven的plu插件

1.pom.xml介绍

POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。
pom文件所在位置如下图所示
Mybatis框架实现对数据库中User表的按编号查询_第6张图片
2.进行Maven插件plugin的配置
Mybatis框架实现对数据库中User表的按编号查询_第7张图片

进行Maven插件plugin的配置代码如下:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <configuration>
                    <source>8source> 
                    <target>8target> 
                    
                configuration>
            plugin>
        plugins>
    build>

(三)通过Maven导入该项目相关包

Mybatis框架实现对数据库中User表的按编号查询_第8张图片

导入该项目相关数据包代码如下:

   
    <dependencies>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.2.8version>
        dependency>
        
        
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.16version>
        dependency>
        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.0version>
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
        dependency>
    dependencies>
    

下述代码为配置好后的pom.xml全部代码,读者可直接复制:


<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.0modelVersion>

    <groupId>org.examplegroupId>
    <artifactId>Mybaits01artifactId>
    <version>1.0-SNAPSHOTversion>

    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <configuration>
                    <source>8source> 
                    <target>8target> 
                    
                configuration>
            plugin>
        plugins>
    build>

    
    <dependencies>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.2.8version>
        dependency>
        
        
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.16version>
        dependency>
        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.0version>
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
        dependency>
    dependencies>
    
project>

至此已经成功新建项目,并通过Maven到入了该项目的所有依赖。


二、数据库中建立User表并建立相对应的User类

(一)在数据库中建立user表

本文采用Mysql workbench(一款可视化数据库管理、设计软件)进行示范,其他数据库同理,注意本文示范操作的是Mysql8。如果是Mysql5,记得在下文中jdbc.url和jdbc.driver进行相应更改,后续相关章节会提到如何更改。
Mybatis框架实现对数据库中User表的按编号查询_第9张图片
上图为所建立的user数据表,可以见到它有三列,列名分别为id,user_name,attack。这三个列名后续会与我们所建立的User类中的成员变量名一一对应。

(二)在项目中建立User类(该类名字与表名对应)

建立如下项目文件结构,并创建User类(与数据库中的User表对应)
Mybatis框架实现对数据库中User表的按编号查询_第10张图片
User类中的内容如下图所示:
Mybatis框架实现对数据库中User表的按编号查询_第11张图片

User类代码如下:

package com.qlg.domain;

public class User {

    private Integer id;
    private String userName;
    private Integer attack;

    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 Integer getAttack() {
        return attack;
    }

    public void setAttack(Integer attack) {
        this.attack = attack;
    }

    //Alt + Insert 自动生成
    //规定输出格式
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", attack=" + attack +
                '}';
    }
}

至此我们已经成功创建了User类与数据库中的表形成了对应


三、Mybatis连接SQL

(一)配置Mybatis全局配置文件mybatis-config.xml

按照下图操作新建mybatis-config.xml文件
Mybatis框架实现对数据库中User表的按编号查询_第12张图片
Mybatis框架实现对数据库中User表的按编号查询_第13张图片
配置mybatis-config.xml文件,加载jdbc外部配置文件属性
Mybatis框架实现对数据库中User表的按编号查询_第14张图片

mybatis-config.xml文件代码如下:


DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <properties resource="jdbc.properties"/>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            dataSource>
        environment>
    environments>

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

(二)配置jdbc.properties文件提供名值对

新建jdbc.properties文件
Mybatis框架实现对数据库中User表的按编号查询_第15张图片
Mybatis框架实现对数据库中User表的按编号查询_第16张图片

jdbc.properties文件代码如下:

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/register_service?userSSL=true&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT
jdbc.username=root
jdbc.password=123456

(三)配置Mybatis全局配置文件的映射文件UserMapper.xml

同理新建mybatis-config.xml中所要映射的表UserMapper.xml
Mybatis框架实现对数据库中User表的按编号查询_第17张图片
UserMapper.xml所建结果如下
Mybatis框架实现对数据库中User表的按编号查询_第18张图片

UserMapper.xml代码如下:


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper">
    
    <select id="queryById" parameterType = "INT" resultType="com.qlg.domain.User">
         select *,user_name as userName from user where id = #{id}
    select>
mapper>

至此我们成功配置完成了Mybatis全局配置文件mybatis-config.xml
并提供了相应变量值使其能够连接数据库
还配置了Mybatis配置文件中的映射UserMapper.xml


四、使用log4j日志框架(可选)

新建log4j.properties,配置Java日志框架
Mybatis框架实现对数据库中User表的按编号查询_第19张图片
在这里插入图片描述
新建后结果如下
Mybatis框架实现对数据库中User表的按编号查询_第20张图片

log4j.properties代码如下:

log4j.rootLogger=DEBUG,A1
log4j.logger.com.taotao = DEBUG
log4j.logger.org.mybatis = DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

至此,我们完成了该项目日志框架的配置


五、建立UserDao接口规范对User表的操作

下面我们来建立UserDao接口,规范我门对User表的操作。
此处我们先写入一个方法
UserDao结果如下图:
Mybatis框架实现对数据库中User表的按编号查询_第21张图片

UserDao接口代码如下:

package com.qlg.dao;

import com.qlg.domain.User;

public interface UserDao {
    //根据编号查询用户
    //方法名:queryUserById()
    //方法需不需要传参:需要传参,传编号
    //方法返回值:类型User
    public User queryUserById(Integer id);
}

至此,我们建立了UserDao接口,只在其中写了一个方法,按编号查询user表中的数据。读者可以根据实际情况,自行增加方法,后续我们将建立该接口的实现类。


六、建立UserDao接口的实现类UserDaoImpl

UserDaoImpl结果如下图:
Mybatis框架实现对数据库中User表的按编号查询_第22张图片

UserDaoImpl代码如下:

package com.qlg.dao.impl;

import com.qlg.dao.UserDao;
import com.qlg.domain.User;
import org.apache.ibatis.session.SqlSession;

public class UserDaoImpl implements UserDao {
    private SqlSession sqlSession;
    public UserDaoImpl(SqlSession sqlSession) {
        this.sqlSession = sqlSession;//在UserDaoImpl 实例化 传的SqlSession 赋值给了本类中的sqlSession
    }
    @Override
    public User queryUserById(Integer id) {
        return sqlSession.selectOne("userMapper.queryById",id);
    }
}

此处利用了UserMapper.xml,读者可以自行回忆我们之前所应进行的java语句操作,可以对比出两者的优劣处。我们都知道html等前端页面要比高级编程语言更加简易方便,此处可以理解为sqlSession提供的方法,使我们链接到了一个类似html文本格式的命令文件中。可以仔细比较一下,体会其中好处。


七、建立UserDaoImplTest类进行测试(实现按编号进行查询)

下面我们开始进行单元测试
首先新建测试类UserDaoImplTest
Mybatis框架实现对数据库中User表的按编号查询_第23张图片
点击完成后,弹出如下对话框
Mybatis框架实现对数据库中User表的按编号查询_第24张图片
按上图操作完毕后,选择右下角OK,记得勾选上Member方法。
Mybatis框架实现对数据库中User表的按编号查询_第25张图片
补好后代码效果如下图
Mybatis框架实现对数据库中User表的按编号查询_第26张图片

UserDaoImplTest代码如下:

package com.qlg.dao.impl;
import com.qlg.dao.UserDao;
import com.qlg.domain.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.Before;
import org.junit.Test;
import java.io.InputStream;

public class UserDaoImplTest {
    private UserDao userDao;
    @Before
    public void setUp() throws Exception {
        //指定全局文件的路径
//        String resource = "mybatis-config.xml";
//        获取输入流,关联全局配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        //构建SqlSessionFactory
        SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
        //获取SqlSession
        SqlSession sqlSession = sf.openSession(true);
        userDao = new UserDaoImpl(sqlSession);
    }
    @Test
    public void queryUserById() {
        User user = userDao.queryUserById(1);
        System.out.println(user);
    }
}

上述代码完成后,按下图进行操作,查看运行结果。

总结(附项目源码)

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

一、MyBatis框架的优点:

  1. 与JDBC相比,减少了50%以上的代码量。

  2. MyBatis是最简单的持久化框架,小巧并且简单易学。

  3. MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。

  4. 提供XML标签,支持编写动态SQL语句。

  5. 提供映射标签,支持对象与数据库的ORM字段关系映射。

二、MyBatis框架的缺点:

  1. SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。

  2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

三、MyBatis框架适用场合:

MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。

对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。

下面为本文项目源码下载方式
链接:https://pan.baidu.com/s/1KyVd3il5_7VtT_Elf5M-6g
提取码:daoc
Mybatis框架实现对数据库中User表的按编号查询_第27张图片

你可能感兴趣的:(java,intellij,idea,maven)