不班门弄斧了,直接放上mybatis的文档。
链接:https://mybatis.org/mybatis-3/zh/index.html
或直接点击MyBatis3中文文档
Idea 2017.3
JDK 1.8
maven 3.3.9
MySql 8.0.15
1.新建一个maven项目
无脑next即可。
2.创建一个数据库
新建一个mybatis数据库,我用的是Navicat。
新建一个User表,各字段如下图所示。
插入数据。
3.在pom.xml中导入所需依赖
项目结构如图所示。
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>com.examplegroupId>
<artifactId>mybatis-demoartifactId>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.15version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.2version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
dependencies>
project>
4.构建 SqlSessionFactory
,获得SqlSession
对象
4.1创建mybatis-config.xml文件
我们选择从XML中构建 SqlSessionFactory
。
为什么要构建SqlSessionFactory
?
MyBatis通过 `SqlSession`对象来直接执行SQL语句。
而我们需要从`SqlSessionFactory`中获得`SqlSession`对象。
如何构建SqlSessionFactory
?
有两种方式,
方式一:从XML中构建SqlSessionFactory
方式二:不使用 XML 构建 SqlSessionFactory,直接从Java代码构建
两种方法文档里都有写,我们选择第一种,从XML中构建SqlSessionFactory。
文档里是这么说的:
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
具体方法:
在src/main/resources下创建mybatis-config.xml文件。
内容如下。数据库url以及用户名密码改成自己的。mapper的内容是文档里抄过来的,这里留个坑,等会再修改。
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT&useSSL=true&useUnicode=true&characterEncoding=UTF8"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
mappers>
configuration>
4.2创建MyBatis工具类
在java目录下创建包com.example.dao和com.example.utils。
在utils下新建类MyBatisUtils,用来获取SqlSessionFactory
对象。
MyBatisUtils内容如下:
package com.example.utils;
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 MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
//获取SqlSessionFactory对象
static{
try {
String resource = "mybatis-config.xml"; // 这个文件就是刚才写的mybatis-config.xml
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession对象
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
5.有了SqlSession对象就可以执行sql语句了!
5.1.定义实体类
新建pojo包,在pojo包下创建User实体类。
User的属性名要和数据库中一样。
package com.example.pojo;
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
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;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
package com.example.dao;
import com.example.pojo.User;
import java.util.List;
public interface UserDao {
List<User> getUserList();
}
接下来我们不用写实现类了,只需写配置文件就好。
5.3就快成功了!
一个sql语句既可以通过 XML 定义,也可以通过注解定义。我们使用xml。
在resources下新建UserDao.xml。
内容如下:
<mapper namespace="com.example.dao.UserDao">
<select id="getUserList" resultType="com.example.pojo.User">
select * from mybatis.user
select>
mapper>
还记得之前留的坑吗?mybatis-config.xml里的mapper。
最终内容如下:
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT&useSSL=true&useUnicode=true&characterEncoding=UTF8"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="UserDao.xml"/>
mappers>
configuration>
package com.example.dao;
import com.example.pojo.User;
import com.example.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
@Test
public void test(){
//获得sqlSession对象
SqlSession sqlSession = MyBatisUtils.getSqlSession();
//执行sql
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userlist = mapper.getUserList();
for (User user : userlist) {
System.out.println(user);
}
//关闭sqlSession
sqlSession.close();
}
}