博客
关于我
学习在IDEA中使用Mybatis(一)环境搭建及入门案例
阅读量:389 次
发布时间:2019-03-05

本文共 5329 字,大约阅读时间需要 17 分钟。

MyBatis入门与入门案例详解

一、前期准备

1. 创建Maven项目

在IntelliJ IDEA中创建一个新的Maven项目,确保项目名称和基准目录设置正确。完成后,项目的pom.xml文件会自动生成,包含了项目的基本配置和依赖管理。

2. 配置项目依赖

pom.xml文件中,添加必要的依赖坐标:

org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
8.0.16
log4j
log4j
1.2.12
junit
junit
4.10

3. 导入依赖

有时候 IDEA 可能不会自动导入新添加的依赖,尤其是当项目已经存在时。解决方法:

  • 右键点击项目,选择 Maven ProjectsReimport All Maven Projects
  • 或者从菜单栏选择 FileSettings → 在 Maven 标签下,调整相关设置。

二、环境搭建

1. 创建User类

创建一个简单的User类,包含基本属性和相应的setget方法,以及toString方法:

package com.hejie.domain;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{ id=" + id + ", username=" + username + ", password=" + password }";
}
}

2. 创建IUserDao接口

创建一个接口 IUserDao,定义一个findAll方法:

package com.hejie.dao;
public interface IUserDao {
List
findAll();
}

3. 配置MyBatis

创建sqlMapConfig.xml文件,配置MyBatis环境:

创建IUserDao.xml映射文件:

4. 配置日志

创建log4j.properties文件,配置日志输出:

# 输出格式
log4j.rootLogger.level=DEBUG
log4j.appender.console=Console
log4j.console.outputEnabled=true
log4j.console.log throttle=false
# 日志文件路径
log4j.file=logs/app.log
# 日志格式
log4j.appender.file=File
log4j.file.name=app.log
log4j.file.encoding=UTF-8
log4j.file.append=true
log4j.file.maxBackupIndex=5
log4j.file.keep日志=7

三、入门案例的编写

1. 基于XML配置的入门案例

编写测试类 MybatisTest

package com.hejie;
import com.hejie.dao.IUserDao;
import com.hejie.domain.User;
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.InputStream;
import java.util.List;
public class MybatisTest {
public static void main(String[] args) throws Exception {
// 读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 创建工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
// 获取SqlSession
SqlSession sqlSession = factory.openSession();
// 获取DAO代理对象
IUserDao iuDao = sqlSession.getMapper(IUserDao.class);
// 执行查询
List
users = iuDao.findAll();
for (User user : users) {
System.out.println(user);
}
// 释放资源
sqlSession.close();
in.close();
}
}

2. 基于注解的入门案例

如果不想使用XML配置,可以使用注解方式:

  • IUserDao 接口上添加 @Select 注解,并在方法上指定SQL语句:
package com.hejie.dao;
import org.apache.ibatis.annotations.Select;
public interface IUserDao {
@Select("select * from user")
List
findAll();
}
  • SqlMapConfig.xml 中使用 class 属性指定DAO接口:

3. 测试类

创建一个测试类,使用Junit框架:

package com.hejie;
import com.hejie.dao.IUserDao;
import com.hejie.domain.User;
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 org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.junit.jupiter.api.Assertions.*;
@RunWith(MockitoJUnitRunner.class)
public class MybatisTest {
@Mock
private SqlSession sqlSession;
@Mock
private IUserDao iuDao;
@Test
public void testFindAll() throws Exception {
// setup
when(iuDao.findAll()).thenReturn(mockList());
// execution
List
users = iuDao.findAll();
assertEquals(mockList().size(), users.size());
// teardown
verify(sqlSession).close();
verify(iuDao).findAll();
}
private List
mockList() {
return List.of(new User(1, "hejie", "password"));
}
}

4. 日志配置

确保日志能够正确记录信息,添加必要的配置文件,并在代码中使用 Logger 类进行日志输出。

四、注意事项

  • 命名规范:保持DAO接口的命名与映射文件一致,确保 namespace 和接口名称一致。
  • 目录结构:确保DAO接口和映射文件所在目录结构与包结构一致。
  • 配置文件位置:映射文件的位置必须与DAO接口的包路径一致。
  • 注解配置:在使用注解时,确保 @Select 注解上的SQL语句与DAO方法名称匹配。
  • 通过以上步骤,可以顺利完成MyBatis的入门配置和入门案例的编写。如果在过程中遇到问题,可以通过检查配置文件的路径和命名是否正确来解决。

    转载地址:http://nvewz.baihongyu.com/

    你可能感兴趣的文章
    NOI2010 海拔(平面图最大流)
    查看>>
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>