1.前言

MyBatis 是什么?

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

本篇介绍如何在 IDEA 中使用 MyBatis 开发 Java 项目,并且使用 Maven 来管理和集成依赖库。

1.相关配置

1.1 Maven 配置

Maven 的优点在于可以方便的管理各种依赖包,我们可以使用 Maven 来管理 MyBatis 和 MySQL 的相关库的依赖。

新建的 Maven 项目目录关系入下:



最后,Maven 目录如下:



新建一个 Maven 工程后,在 pom.xml 中配置 MyBatis 和 mysql 依赖库。

<?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>net.libaoquan.learnssm.c3</groupId>
<artifactId>learnmybatis</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mybatis.version>3.4.5</mybatis.version>
<mysql.version>8.0.11</mysql.version>
</properties> <dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies> </project>

1.2 MyBatis 配置

在 resources 文件夹下新建 mybatis-config.xml 文件,填入 MyBatis 配置信息。

其中:

  • typeAliases 项关联 POJO 类,并为这个类起了一个别名,这样,在其他的 Maven 相关配置中,可以使用这个别名代替这个 POJO 类。
  • mappers 项关联的是 XML 映射器,在这个映射器中实现 sql 逻辑。
<?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>
<typeAliases><!-- 别名 -->
<typeAlias alias="worker" type="net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker"/>
</typeAliases > <!-- 数据库环境 -->
<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://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="mapper/workerMapper.xml"/>
</mappers>
</configuration>

2.创建数据库

创建数据库并填入数据。

create database ssm;
create table worker (
id int primary key auto_increment,
name varchar(255),
note varchar(255)
); alter table worker default character set utf8;
alter table worker change name name varchar(255) character set utf8;
alter table worker change note note varchar(255) character set utf8; insert into worker (name, note) values ('章三', '工程师');
insert into worker (name, note) values ('王如', '工程师');
insert into worker (name, note) values ('李斯', '工程师');
insert into worker (name, note) values ('赵翼', '设计师');
insert into worker (name, note) values ('孙起', '设计师');

3.创建 POJO 类

一个 POJO 类,简单来说就是与数据库中一张表相关联的一个 Java 类。

在这里,新建一个 POJO 类 Worker,与数据表 worker 相关联,可以使自动填充填写 setter 和 getter 方法。

package net.libaoquan.learnssm.c3.learnmybatis.pojo;

public class Worker {
private Integer id;
private String name;
private String note; public Worker() {
this.id = 0;
this.name = "";
this.note = "";
}
public Worker(Integer id, String name, String note) {
this.id = id;
this.name = name;
this.note = note;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getNote() {
return note;
} public void setNote(String note) {
this.note = note;
} @Override
public String toString() {
return "Worker{" +
"id=" + id +
", name='" + name + '\'' +
", note='" + note + '\'' +
'}';
}
}

4.创建 xml 映射器

一个 xml 映射器用来实现如何处理与之关联的 POJO 类的数据逻辑,一般在接口中实现处理逻辑,具体的实现由 xml 文件中的 sql 语句实现。

使用 workerMapper.xml 以及 WorkerMapper 接口实现 xml 映射器。

首先,新建一个接口 workerMapper,其中方法 getWorker 是一个 Worker 类的处理逻辑。

package net.libaoquan.learnssm.c3.learnmybatis.mapper;

import net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker;

public interface WorkerMapper {
public Worker getWorker(int id);
}

接着,在 resources 目录下建立 mapper 目录,创建 workerMapper.xml。

其中:

  • 在 namespace 中关联接口文件
  • select 标志是一个查询语句,其返回类型是一个 worker (在mybatis-config.xml 中定义的别名),参数是一个 int 类型,在 sql 中表示为 #{id}
  • select 的 id 关联的是接口中的方法名。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//rnybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper">
<select id="getWorker" parameterType="int" resultType="worker">
select id, name, note from worker where id= #{id}
</select>
</mapper>

5.测试

新建 test 类,测试配置是否正确。

使用 2 种 SQL 发送器,分别是用 SqlSession 直接发送,和通过 SqlSession获取 Mapper接口再发送。

一般推荐使用第二种。

package net.libaoquan.learnssm.c3.learnmybatis;

import net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper;
import net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker;
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; public class test {
public static void main(String[] args){
SqlSessionFactory SqlSessionFactory = null;
String resource = "mybatis-config.xml";
InputStream inputStream;
SqlSession sqlSession = null;
try {
inputStream = Resources.getResourceAsStream (resource);
SqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream);
sqlSession = SqlSessionFactory.openSession();
// 用 SqlSession 直接发送
Worker t = (Worker)sqlSession.selectOne("net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper.getWorker", 1);
System.out.println(t.toString()); // 通过 SqlSession获取 Mapper接口再发送
WorkerMapper tm = sqlSession.getMapper(WorkerMapper.class);
Worker t2 = tm.getWorker(2);
System.out.println(t2.toString()); sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
sqlSession.rollback();
}
finally {
if (sqlSession != null){
sqlSession.close();
}
}
}
}

Java 笔记——在 IDEA 中使用 Maven 配置和使用 MyBatis的更多相关文章

  1. Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 怎样打开依赖视图

    Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 配置原则: 利用依赖,将所需的jar包加载到project中. 先依赖主要jar包 Spring + Spring ...

  2. Java归去来第4集:java实战之Eclipse中创建Maven类型的SSM项目

    一.前言 如果还不了解剧情,请返回第3集的剧情          Java归去来第3集:Eclipse中给动态模块升级 二.在Eclipse中创建Maven类型的SSM项目 2.1:SSM简介 SSM ...

  3. 【Java】在eclipse中使用maven进行项目构建 入门篇

    maven配置的简单说明 从\192.168.30.150\103.初级人员培训资料\新建文件夹 (2)\环境下提取apache-maven-3.0.4.zip压缩包,解压缩至E盘下 在E盘下新建&q ...

  4. 在Java中使用Maven配置的版本信息

    我们在使用maven开发一些项目的时候需要知道当前的版本状态,但版本状态储存在pom.xml文件中,可以采用以下2种方式进行获取: 1. 采用xml解析的方式去获取pom文件的{project.ver ...

  5. eclipse中的maven配置

    1.下载最新版eclipse,包含maven版本 2.配置maven本地仓库(修改settings.xml)

  6. idea中默认maven配置

    使用idea时,通常会配置自己的maven,但是发现每创建一个新项目都需要重新配置一遍,原来在idea中有一个默认配置,修改后就会全局生效,具体配置如下: 简单两步,配置完成.

  7. 七、【Docker笔记】Docker中网络基础配置

    一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...

  8. IntelliJ IDEA 中为Maven 配置阿里云镜像源

    idea中查看位置,应该都是一样的这个位置 在此位置下新建一个.xml文件 内容如下: <?xml version="1.0" encoding="UTF-8&qu ...

  9. java之IDEA中使用Maven

    Maven的安装与使用 安装 1.下载,官网下载. 2.解压,存放路径中不可包含空格和中文.如:"E:\dev\workspace\maven\apache-maven-3.6.0" ...

随机推荐

  1. Articulate Presenter文字乱码的排除

    Articulate Presenter乱码的问题如何设置? 字体乱码的设置: 1.首先如果ppt中有中文内容,肯定需要将Articulate Presenter的Character Set设置为No ...

  2. Common lang一些边界方法总结(好记性不如烂笔头,需要慢慢积累).一定要利用好现有的轮子,例如Apache common与Google Guava

    好记性真是不如烂笔头啊!!!! 如下代码: List<String> list = new ArrayList<String>(); list.add("1" ...

  3. poi 创建excel数据

    public static void main(String[] args) throws Exception { // TODO 设置excel的标题 List<String> exce ...

  4. laravel扩展推荐

    1. Intervention/image 图片处理 2.Laravel User Agent 轻松识别客户端信息 3.OAuth 2.0 支持 4.页面面包屑工具 5.计划任务分发器(直接可替换掉 ...

  5. Node.js实战(九)之事件循环

    Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高. Node.js 几乎每一个 API 都是支持回调函数的. Node ...

  6. Kafka设计解析(二十一)关于Kafka幂等producer的讨论

    转载自 huxihx,原文链接 关于Kafka幂等producer的讨论 众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS) ...

  7. 使用Gitblit 在Windows2008 r2上部署Git Server(完整版)

    第一章 前言 使用gitblit搭建git server需要配置两个大件:java jdk.gitblit 本次搭建gitServer采用是当前最新版的两个版本,分别如下: jdk:Java SE D ...

  8. [Usaco2009 Feb]Revamping Trails 道路升级 BZOJ1579

    分析: 比较裸的分层图最短路,我的实现方式是,每次求出1所有节点的最短路,之后用每一个节点更新与其相连的节点(取较小值),之后做K次,就求出了分层图的最短路了. 附上代码: #include < ...

  9. 20155202张旭 Exp3 免杀原理与实践

    20155202张旭 Exp3 免杀原理与实践 AV厂商检测恶意软件的方式主流的就三种: 基于特征码的检测 启发式恶意软件检测 基于行为的恶意软件检测 我们要做的就是让我们的恶意软件没法被这三种方式找 ...

  10. binary 和 varbinary 用法全解

    在SQL Server中,使用数据类型 binary(n) 和 varbinary(n) 存储二进制数据,n是指字节数量: binary(n):固定长度为 n 字节,其中 n 值从 1 到 8,000 ...