1、点击 File --> New --> Module
2、选择左侧的 Maven,由于只是创建一个普通的项目, 此处点击 Next 即可。
3、输入 GroupId 和 ArtifactId。
4、配置 maven 的 pom.xml 文件
设置资源文件路径。IDEA 的 Maven 默认是只会打包 resource 下的资源文件,不会编译 src 下的 java 目录的 xml 文件,如果 mapper 文件不全放在 resource 文件夹下,则需要通过配置告知 Maven。
src/main/java
**/*.properties
**/*.xml
false
添加 jar 包依赖。
org.mybatis
mybatis
3.5.1
mysql
mysql-connector-java
8.0.13
junit
junit
4.11
5、目录结构
实体类的属性需要与数据库表中的字段一一对应, 并有对应的 getter 和 setter。
package com.noteligible.pojo;
import java.io.Serializable;
public class User {
int id;
String account;
String password;
String name;
String phone;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getAccount() { return account; }
public void setAccount(String account) { this.account = account; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
}
在 resource 文件夹新建 mybatis-config.xml(名称不固定),该文件是 Mybatis 核心配置文件,配置文件内容为数据源、事务管理。
1、引用 jdbc.properties 文件,读取配置文件中的属性
在 resource 文件夹新建 jdbc.properties 配置文件,保存配置相关的信息。
JDBC 连接 MySQL5 使用驱动包 com.mysql.jdbc.Driver,JDBC 连接 MySQL6 及以上使用驱动包 com.mysql.cj.jdbc.Driver,且需要指定时区 serverTimezone。
# mysql驱动包名
driver=com.mysql.cj.jdbc.Driver
# 数据库连接地址
url=jdbc:mysql://localhost:3306/demo_1? serverTimezone=GMT &useUnicode=true& characterEncoding=utf8
# 用户名
username=root
# 密码
password=root
2、typeAliases 设置类型别名
类型别名是为 Java 类设置一个短的名字(大小写不敏感),用来减少类完全限定名的冗余。
但一般来说pojo都会有很多, 所以 mybatis 支持指定包名,批量指定别名,扫描整个包下的类。
3、environments 环境配置
environments 对应的是数据库相关的属性。我们可以配置多个环境,但每个 SqlSessionFactory 实例只能选择其一,和spring整合后 environments配置将废除。
4、加载 mappers 映射文件
方法一:使用相对于类路径加载单个映射文件
方法二:使用mapper接口类路径加载单个映射文件
(此方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中)
方法三:指定包名批量加载映射文件 ,该配置会扫描指定包中的所有 .xml
文件。
(此方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中)
在 mapper 文件夹新建 UserMapper.xml 文件,并在 Configuration.xml 文件中加载该文件
使用 resultType 时,其类属性名必须和查询的列名一致,如果不一致可以用 resultMap。
在 test 文件夹 新建 junit 测试类。
public class test {
private SqlSessionFactory sqlSessionFactory = null;
@Before
public void init() throws Exception{
// 1. 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 2. 加载SqlMapConfig.xml配置文件
InputStream inputStream = Resources.getResourceAsStream("mybaits-config.xml");
// 3. 创建SqlSessionFactory对象
this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
}
@Test
public void testQueryUserById() {
// 4. 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5. 执行SqlSession对象执行查询,获取结果User
// 第一个参数是UserMapper.xml的statement的id,第二个参数是执行sql需要的参数;
User user = sqlSession.selectOne("queryUserById",1);
// 6. 打印结果
System.out.println(user);
// 7. 释放资源
sqlSession.close();
}
}
selectOne 只能查询一条记录,selectList 可以查询一条或多条记录。