参考文章
最终的样子
注意: 红线标识的6个文件是真正需要的文件

前置条件
- 在本机用 MySQL 创建一个名为
study
的数据库
create database study;
- 在
study
数据库中创建一个名为Animal
的表
use study;
CREATE TABLE `Animal` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`name` varchar(45) NOT NULL COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='记录动物名称的表';
创建成功后,效果如下图

- 创建临时账号(名称为"naive")并授权
create user naive identified by 'this_is_a_passw0rd';
grant all on study.Animal to naive;
搭建骨架
- 在一个临时目录下执行名为
construct.sh
的脚本
脚本的内容如下
#!/bin/bash
mkdir -p playground/src/main/java/com/naive/dao
mkdir -p playground/src/main/java/com/naive/entity
mkdir -p playground/src/main/resources/mapper
mkdir -p playground/src/main/resources/config
touch playground/src/main/java/com/naive/dao/AnimalDao.java
touch playground/src/main/java/com/naive/entity/Animal.java
touch playground/src/main/java/com/naive/Core.java
touch playground/src/main/resources/mapper/Animal.xml
touch playground/src/main/resources/config/mybatis-config.xml
touch playground/pom.xml
此时项目的结构如下图

- 填写
pom.xml
会用到以下三个依赖
mybatis
mysql-connector-java
gson
完整的 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.naive</groupId>
<artifactId>study</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
</plugin>
</plugins>
</build>
</project>
- entity 包下的 java 文件
Animal.java 文件的内容如下
package com.naive.entity;
import com.google.gson.Gson;
public class Animal {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return new Gson().toJson(this);
}
}
- dao 层
AnimalDao.java 文件的内容如下
package com.naive.dao;
import com.naive.entity.Animal;
import java.util.List;
public interface AnimalDao {
List<Animal> loadAnimals();
int insertOneAnimal(String name);
}
- Mapper
在playground/src/main/resources/mapper
路径下的Animal.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.naive.dao.AnimalDao">
<resultMap id="Animal" type="com.naive.entity.Animal">
<result column="id" property="id"/>
<result column="name" property="name"/>
</resultMap>
<select id="loadAnimals" resultMap="Animal">
SELECT id, name FROM Animal;
</select>
<insert id="insertOneAnimal">
INSERT INTO Animal (`name`) VALUES (#{name});
</insert>
</mapper>
- mybatis 配置
在playground/src/main/resources/config
路径下的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>
<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/study?characterEncoding=UTF8"/>
<property name="username" value="naive"/>
<property name="password" value="this_is_a_passw0rd"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/Animal.xml"/>
</mappers>
</configuration>
- 主程序
Core.java 的内容如下
package com.naive;
import com.naive.dao.AnimalDao;
import com.naive.entity.Animal;
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;
public class Core {
public static void main(String[] args) throws IOException {
String resource = "config/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AnimalDao animalDao = sqlSession.getMapper(AnimalDao.class);
animalDao.insertOneAnimal("东方苍龙");
animalDao.insertOneAnimal("南方朱雀");
animalDao.insertOneAnimal("西方白虎");
animalDao.insertOneAnimal("北方玄武");
sqlSession.commit();
List<Animal> animalList = animalDao.loadAnimals();
for (Animal animal : animalList) {
System.out.println(animal);
}
}
}
大功告成
main 函数运行结果如下

网友评论