本文将介绍如何在 Spring Boot 项目中整合达梦数据库,并实现基本的用户管理功能。通过以下步骤,我们将创建一个简单的 RESTful API,以便于用户的增删改查(CRUD)操作。
【点我: 下载整套源码】
1. 创建数据库与数据表
首先,我们需要在达梦数据库中创建一个名为 test_user
的库,并在其中创建一个 user
表。
2. 引入依赖
在 pom.xml
文件中添加以下依赖,以支持 MyBatis-Plus 和达梦数据库的 JDBC 驱动:
<!-- Mybatis-Plus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!-- 达梦数据库依赖 -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver6</artifactId>
<version>8.1.3.162</version>
</dependency>
3. application.yml 配置
接下来,配置 application.yml
文件以设置服务器端口、国际化资源和 MyBatis 相关信息:
server:
port: 8089
4. application-druid.yml 配置
在 application-druid.yml
中配置达梦数据库连接信息:
# 配置达梦数据库
5. 创建实体类
在项目中创建 User
实体类,用于映射数据库中的 user
表:
@Data
public class User {
/** 主键 **/
private Integer id;
/** 用户名 **/
private String name;
/** 年龄 **/
private Integer age;
/** 创建时间 **/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 更新时间 **/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
6. 创建 Controller
创建一个 UserController
类,处理用户相关的请求:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
/**
* 列表
* @param user
* @return 用户列表
*/
@GetMapping("/list")
public List<User> list(User user) {
return userService.list(user);
}
/**
* 新增
* @param user
* @return 操作结果
*/
@PostMapping
public String insert(@RequestBody User user) {
return userService.insert(user);
}
}
7. 创建 Service
实现 IUserService
接口,创建 UserServiceImpl
类来处理业务逻辑:
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
/**
* 列表
* @param user
* @return 用户列表
*/
@Override
public List<User> list(User user) {
return userMapper.selectUserInfoList(user);
}
/**
* 新增用户
* @param user
* @return 操作结果
*/
@Override
public String insert(User user) {
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
userMapper.insertUser(user);
return "操作成功";
}
}
8. 创建 Mapper
创建 UserMapper
接口,定义数据库操作的方法:
@Mapper
public interface UserMapper {
public User selectZqBookInfoById(Long id);
public List<User> selectUserInfoList(User userInfo);
public int insertUser(User userInfo);
public int updateUser(User userInfo);
public int deleteUserById(Long id);
}
9. 创建 SQL 映射文件
在 resources/mapper
目录下创建 UserMapper.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.example.dm_demo.mapper.UserMapper">
<resultMap type="com.example.dm_demo.domain.User" id="UserInfoResult">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectUserInfoVo">
select * from "user"
</sql>
<select id="selectUserInfoList" parameterType="com.example.dm_demo.domain.User" resultMap="UserInfoResult">
<include refid="selectUserInfoVo"/>
<where>
<if test="age != null and age != ''"> and age = #{age}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
</where>
order by create_time desc
</select>
<insert id="insertUser" parameterType="com.example.dm_demo.domain.User">
insert into "user"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="age != null">age,</if>
<if test="name != null">name,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="age != null">#{age},</if>
<if test="name != null">#{name},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateUser" parameterType="com.example.dm_demo.domain.User">
update "user"
<trim prefix="SET" suffixOverrides=",">
<if test="age != null">age = #{age},</if>
<if test="name != null">name = #{name},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteUserById" parameterType="Long">
delete from "user" where id = #{id}
</delete>
<delete id="deleteUserByIds" parameterType="String">
delete from "user" where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
10. 新增用户测试
可以使用 POST 请求向接口 http://127.0.0.1:8089/user
提交以下 JSON 数据以新增用户:
{
"name": "陈小说",
"age": 22
}
11. 列表用户测试
使用 GET 请求获取用户列表,访问接口 http://127.0.0.1:8089/user/list
,应该会得到如下响应:
[
{
"id": 10,
"name": "陈小说",
"age": 22,
"createTime": "2024-11-02 14:33:38",
"updateTime": "2024-11-02 14:33:38"
}
]