以下是使用IntelliJ IDEA 2021创建基于JDK 1.8的名为Mybatis的Maven项目结构,并结合Navicat操作数据库以及使用Mybatis进行增删改查操作的详细步骤:
File
-> New
-> Project
,在弹出的窗口中选择Maven
项目类型,然后点击Next
。com.example
(可根据实际情况自定义)。Mybatis
(和项目名对应)。1.0-SNAPSHOT
。Next
,然后选择项目的存储路径,点击Finish
完成项目的创建。新建数据库
,输入数据库名称(例如mybatis_demo
),选择合适的字符集和排序规则,点击确定
创建数据库。新建表
。int
,勾选主键
(一般作为唯一标识每条记录的序号),可以设置为自增长(根据具体数据库语法来设置自增长属性,如MySQL中设置AUTO_INCREMENT
)。varchar
,并设置合适的长度(如50
),用于存储用户姓名。varchar
,设置长度来存储籍贯信息。int
,用于存储年龄信息。保存
,输入表名user
,保存该表结构。user
表,选择打开表
,在弹出的数据录入界面中,手动输入不少于3条的记录数据,例如:
id
为1
,username
为张三
,addr
为北京
,age
为25
。id
为2
,username
为李四
,addr
为上海
,age
为30
。id
为3
,username
为王五
,addr
为广州
,age
为28
等。保存
按钮插入数据到表中。pom.xml
文件中添加Mybatis及数据库驱动等依赖(以MySQL数据库为例):
<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>MybatisartifactId>
<version>1.0-SNAPSHOTversion>
<properties>
<maven.compiler.source>8maven.compiler.source>
<maven.compiler.target>8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.10version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.26version>
dependency>
dependencies>
project>
保存pom.xml
文件,Maven会自动下载相关依赖到本地仓库(如果网络和配置正常的话)。
2. 创建项目结构:
- 在src/main/java
目录下创建项目的包结构,例如com.example.mybatis
(根据实际的GroupId
和项目组织情况来定),后续的Java代码类将放在对应的包下。
- 在src/main/resources
目录下创建mybatis-config.xml
配置文件,用于配置Mybatis的全局设置,示例内容如下:
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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="your_password"/>
dataSource>
environment>
environments>
<mappers>
<package>com.example.mybatis.mapperpackage>
mappers>
configuration>
注意将上述配置中的数据库连接相关信息(如用户名、密码、数据库名称等)替换为你实际使用的内容。
com.example.mybatis
包下创建User
实体类,用于映射数据库中的user
表记录,代码示例如下:package com.example.mybatis;
public class User {
private Integer id;
private String username;
private String addr;
private Integer age;
// 生成对应的getter和setter方法
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 getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", addr='" + addr + '\'' +
", age=" + age +
'}';
}
}
com.example.mybatis
包下新建mapper
子包,在该子包中创建UserMapper
接口,定义对user
表进行增删改查的抽象方法,示例代码如下:package com.example.mybatis.mapper;
import com.example.mybatis.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface UserMapper {
// 查询所有用户
@Select("SELECT * FROM user")
List<User> findAllUsers();
// 根据id查询用户
@Select("SELECT * FROM user WHERE id = #{id}")
User findUserById(Integer id);
// 新增用户
@Insert("INSERT INTO user (username, addr, age) VALUES (#{username}, #{addr}, #{age})")
int insertUser(User user);
// 更新用户信息
@Update("UPDATE user SET username = #{username}, addr = #{addr}, age = #{age} WHERE id = #{id}")
int updateUser(User user);
// 删除用户
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(Integer id);
}
这里使用了Mybatis的注解方式来定义SQL语句,也可以使用XML方式(下面会简单提及XML方式的配置)。
3. 创建Mapper XML文件(可选,如果采用XML方式定义SQL语句):
- 在src/main/resources
目录下创建与mapper
包结构对应的目录结构(即com/example/mybatis/mapper
),在该目录下创建UserMapper.xml
文件,内容示例如下(以查询所有用户为例,展示XML方式编写SQL语句):
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.mapper.UserMapper">
<select id="findAllUsers" resultMap="UserResultMap">
SELECT * FROM user
select>
<resultMap id="UserResultMap" type="com.example.mybatis.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="addr" column="addr"/>
<result property="age" column="age"/>
resultMap>
mapper>
同时需要在mybatis-config.xml
的
标签中配置对应的Mapper XML文件路径(如果采用XML方式),例如:
<mappers>
<mapper resource="com/example/mybatis/mapper/UserMapper.xml"/>
mappers>
在src/test/java
目录下创建测试类(例如MybatisTest
),使用JUnit(需要添加JUnit依赖到pom.xml
,此处省略添加依赖步骤)或者直接编写main
方法来测试Mybatis的增删改查功能,示例代码如下(以JUnit 5为例):
package com.example.mybatis;
import com.example.mybatis.mapper.UserMapper;
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.jupiter.api.Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
public class MybatisTest {
@Test
public void testFindAllUsers() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.findAllUsers();
assertNotNull(userList);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void testFindUserById() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findUserById(1);
assertNotNull(user);
System.out.println(user);
sqlSession.close();
}
@Test
public void testInsertUser() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User newUser = new User();
newUser.setUsername("赵六");
newUser.setAddr("深圳");
newUser.setAge(26);
int result = userMapper.insertUser(newUser);
sqlSession.commit();
assertEquals(1, result);
sqlSession.close();
}
@Test
public void testUpdateUser() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User updateUser = userMapper.findUserById(1);
updateUser.setUsername("张三改");
updateUser.setAddr("北京改");
updateUser.setAge(26);
int result = userMapper.updateUser(updateUser);
sqlSession.commit();
assertEquals(1, result);
sqlSession.close();
}
@Test
public void testDeleteUser() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int result = userMapper.deleteUser(3);
sqlSession.commit();
assertEquals(1, result);
sqlSession.close();
}
}
上述代码中的各个测试方法分别演示了查询所有用户、根据id查询用户、新增用户、更新用户和删除用户的操作流程。
通过以上完整的步骤,就完成了使用IntelliJ IDEA 2021创建名为Mybatis的Maven项目结构,并实现了基于Mybatis对数据库中user
表数据的增删改查操作。在实际应用中,还可以根据具体业务需求进一步优化和扩展功能。