在IDEA上建立MyBatis工程,并联动远程服务器的MySQL

一、系统环境

 

1.本地端环境:Win10 1903;IDEA 2020.1.3;JDK 1.8

2.服务器环境:Ubuntu 20;MySQL 8.0.22

二、详细过程

1.本地端安装Maven

前往Maven – Download Apache Maven下载最新版的Maven程序

在本地解压放到合适的位置,然后添加系统变量(路径根据自己的情况作适当修改):

MAVEN_HOME      D:\Apps\apache-maven-3.6.3

然后添加Path新内容:

;%MAVEN_HOME%\bin;

2.本地端配置Maven

首先配置Maven用指定的repository文件夹来存放内容,打开conf/settings.xml

按照下图蓝框的样式,写红框中的内容,用来指定Maven资源路径

然后配置Maven用国内阿里云加载资源,加快加载速度,继续在settings.xml中修改下图内容,同样参考蓝框的样式,写出红框中的内容(图中阿里云Maven资源的网址:http://maven.aliyun.com/nexus/content/groups/public/)。

保存后退出。在命令行界面执行如下指令:

mvn help:system

此时maven会从阿里云源下载一些数据包,等待其下载完成即可,Maven配置完成。

3.IDEA建立项目

下面将建立一个MyBatis的演示项目,演示简单的读取服务器中MySQL数据库中的表的数据,其中实现了数据库与java类+对象的映射效果。新建Maven项目,首页配置按照下图所示

然后点击下一步,对其命名,再点击下一步,蓝色框中选择我们刚才部署的Maven路径;红色框与紫色框中的内容应该会自动生成,不生成可以自己按照图中格式定制路径,其中紫色框就是上面刚配置的maven的repository路径。

4.在建立的maven项目中添加内容

4.1首先按如下图样式建立文件与文件夹,注意名字带.的文件夹都是包名,不是一个文件夹,建立的时候要注意。

4.2然后开始写里面的内容,首先是API01_user.java,它是一个接口:

package len.mybatis;

import java.util.List;

/**
 * 【用户持久层接口】
 */
public interface API01_user {
    /*
    查询所有操作
     */
    List<mybatis01_user_mysql> findAll1();
}

4.3然后是mabatis01_user_mysql.java

package len.test;

import len.mybatis.API01_user;
import len.mybatis.mybatis01_user_mysql;
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;

/**
 * 【MyBatis入门案例】     视频课源:SSM框架 8
 */

public class MyBatisTest01 {
    public static void main(String[] args) throws IOException {
        // 1.读取配置文件
        InputStream inputStream1 = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory1 = sqlSessionFactoryBuilder.build(inputStream1);
        // 3.使用工厂生产SqlSession对象
        SqlSession sqlSession1 = sqlSessionFactory1.openSession();
        // 4.使用SqlSession创建api01_user.java接口的代理对象
        API01_user api01_user1 = sqlSession1.getMapper(API01_user.class);
        // 5.使用代理对象执行方法
        List<mybatis01_user_mysql> user1 = api01_user1.findAll1();
        for(mybatis01_user_mysql user:user1){
            System.out.println("打印User结果:" + user);
        }
        // 6.释放资源
        sqlSession1.close();
        inputStream1.close();
    }
}

4.4然后是Mapper01.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 对应教程中:IUserDao.xml -->
<!-- 作用:创建映射文件;对应java文件:API01_user.java -->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="len.mybatis.API01_user">
    <!-- id写的就是api01_user厘米的findAll1方法 -->
    <select id="findAll1" resultType="len.mybatis.mybatis01_user_mysql">
        select * from user;
    </select>
</mapper>
<!--
 【注意事项】
 1.mybatis的映射配置文件位置必须和API01_user.java接口的包结构相同
 2.映射配置文件的mapper标签namespace属性的取值必须是API01_user.java接口的全限定类名
 3.映射配置文件的操作配置(select),id属性的取值必须是API01_user.java接口的方法名,如上面写的findAll1
 -->

4.5然后是log4j.properties:

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

上面的代码复制后,IDEA会提示错误,不用理会就可以。

4.6然后是SqlMapConfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 导入MyBatis配置文件Config的约束 -->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- MyBatis的主配置 -->
<configuration>
    <environments default="mysql">
        <!-- 配置MySQL的环境 -->
        <environment id="mysql">
            <!-- 配置事务的类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(也叫连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>  <!-- 旧版写法:<property name="driver" value="com.mysql.jdbc.Driver"/> -->
                <property name="url" value="jdbc:mysql://192.168.3.22:3306/eesy_mybatis?useUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="boyLenPC"/>
                <property name="password" value="0001"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <mapper resource="len/mybatis/Mapper01.xml"/>
    </mappers>
</configuration>
        <!--  -->

上面代码中,value="jdbc:mysql://192.168.3.22:3306/eesy_mybatis?useUnicode=true&amp;characterEncoding=utf-8"代码就是远程服务器MySQL的信息;192.168.3.22是服务器Host,3306是服务器上MySQL的默认端口;eesy_mybatis是要查询的数据表名字。这三个都可根据自己的配置情况做修改,其余代码不要动。

4.7最后是MyBatisTest01.java:

package len.test;

import len.mybatis.API01_user;
import len.mybatis.mybatis01_user_mysql;
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;

/**
 * 【MyBatis入门案例】     视频课源:SSM框架 8
 */

public class MyBatisTest01 {
    public static void main(String[] args) throws IOException {
        // 1.读取配置文件
        InputStream inputStream1 = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory1 = sqlSessionFactoryBuilder.build(inputStream1);
        // 3.使用工厂生产SqlSession对象
        SqlSession sqlSession1 = sqlSessionFactory1.openSession();
        // 4.使用SqlSession创建api01_user.java接口的代理对象
        API01_user api01_user1 = sqlSession1.getMapper(API01_user.class);
        // 5.使用代理对象执行方法
        List<mybatis01_user_mysql> user1 = api01_user1.findAll1();
        for(mybatis01_user_mysql user:user1){
            System.out.println("打印User结果:" + user);
        }
        // 6.释放资源
        sqlSession1.close();
        inputStream1.close();
    }
}

代码写完了,以上的一些路径的代码,如果想修改的话,可以根据情况修改即可,但要注意要与工程内文件夹的结构一致。

5.在MySQL中添加表与数据

在xshell的mysql模式下输入以下指令,添加表与表头:

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` datetime default NULL COMMENT '生日',
  `sex` char(1) default NULL COMMENT '性别',
  `address` varchar(256) default NULL COMMENT '地址',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

此时表已经建好了,然后在表中添加两个示例数据,用于上面MyBatis工程的功能演示,这里我用的是Navicat添加的数据,如图所示:

完成后运行MyBatis工程中的MyBatisTest01.java,出现下图所示结果,说明运行成功

三、参考网址

Maven安装与配置_leoxiaoge的博客-CSDN博客_安装maven

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340