spring boot+mysql的增删改查

软件使用的是idea  不是eclipse!!!!!!!!!

有错误欢迎指出

0.创建一个目标数据库或直接使用已有数据库

1.首先创造新工程;

2.修改Pom文件,添加所需的依赖;

3.修改resources中的application.properties配置文件或者创造application.yml配置文件;

(如:端口号,连接数据库,项目路径(可加可不加)等)

4.新建一个DO实体类将数据库中各类的数据信息添加进去(例如id、name这种);

(实体类中的类型和数据需要和数据库中一一对应)

5.新建一个Dao接口,然后编写xml,写接口,调用方法等;

package 包名;

@Mapper//给mapper接口自动生成一个实现类
public interface UserDao {


    void add(UserDO userDO);//增

    void delect(UserDO userDO);//删

    UserDO getById(String id);//根据id查询

    void edit(UserDO userDO);//改

    List<UserDO> page(UserDO userDO);//分页

(下面的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="Dao所在位置全名">

    <resultMap id="实体类名称+ResultMap" type="实体类所在位置">
        <id property="数据库中主键名称" column="数据库中主键的名称"/>
        <result property="数据库中各字段名称"  column="数据库中各字段名的名称"/>
        <result property="数据库中各字段名称"  column="数据库中各字段名的名称"/>
        <result property="数据库中各字段名称"  column="数据库中各字段名的名称"/>
        ##有几个写几个,也可以直接映射
  
    </resultMap>
	
    <insert id="Dao接口中“增”方法的全名" parameterType="Stirng">
		INSERT INTO 数据库名 (数据库中所有字段名) VALUES (
			##{所有字段名格式为#{}用“,”英文逗号分隔顺序要和数据库中的顺序对应,否则查询错误},
		)
	</insert>
	
    <delete id="Dao接口中删除方法的名称" parameterType="实体类所在位置的全称">
        delete from 数据库名 where 数据库中主键名称=#{主键}
    </delete>
	
    <select id="Dao接口中查询方法的全名" resultMap="实体类名称+ResultMap" parameterType="实体类所在位置的全称">
		select * from 数据表名 where 数据库中主键名称 = #{主键}
	</select>

    <update id="Dao接口中改方法的全名" parameterType="实体类所在位置的全称">
        UPDATE 数据库名
        <set>
            <if test="工程中代指字段名的名称 != null and 工程中代指字段名的名称 != ''">
                数据库中字段名的名称 = #{工程中代指字段名的名称},
##这是String类型用来去空字符串和null的判断方法
            </if>
            <if test="工程中代指字段名的名称 != null">
				数据库中字段名的名称 = #{工程中代指字段名的名称},
##除了String以外的
			</if>
           
           ##写完所有需要更改的字段名,上述逻辑语句的意思是判断是否为空或者为空字符串
        </set>
        WHERE 主键 = #{主键}
    </update>

    <select id="Dao接口中分页方法全名" resultMap="实体类名称+ResultMap" parameterType="实体类所在位置的全称">
        SELECT
      数据库中各字段名的名称(写完写全,逗号分离
        from 数据库名
        <where>
            <if test="工程中代指字段名的名称 != null and 工程中代指字段名的名称 != ''">
                <![CDATA[ and 数据库中字段名的名称 like concat('%', #{工程中代指字段名的名称},'%')]]>
                ##模糊查询语句
            </if>
            <if test="工程中代指字段名的名称 != null and 工程中代指字段名的名称 != ''">
                and 数据库中字段名的名称 = #{工程中代指字段名的名称}
##准确查询
            </if>
        </where>
        order by create_time desc
##        根据创建时间(create_time)倒叙查询(可自定义)
    </select>

 
</mapper>

(定义方法)

6.新建service服务层;

(对所需前端返回的数据,新建多个类,放置)例如add、edit、request、response等

package 包名;


@Service//服务层注解
//主事务类型
@Transactional(value = "masterTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class UserService {

    @Autowired//自动注入
    private UserDao userDao;

   //根据id查询
    public UserDO getById(String id) {
        UserDO result = userDao.getById(id);
        return result;
    }

    //增加
    public UserDO add(UserAdd userAdd) throws Exception {
        UserDO = new UserDO();
        BeanUtils.copyProperties(userAdd, userDO);
        //雪花算法获取id
        long id = SpringContextUtils.getContext().getBean(SnowFlakeUtils.class).nextId();
        userDO.setId(String.valueOf(id));
        userDao.add(userDO);
        return userDO ;
    }

    //改
    public UserDO edit(UserEdit userEdit) throws Exception {
        UserDO userDO = new UserDO();
        BeanUtils.copyProperties(userEdit, userDO);
        userDao.edit(userDO);
        return userDO ;
    }

    //删
    public Long delete(String id) throws Exception {
        userDao.delete(id);
        return null;
    }

 
    //分页
    public Page<UserResponse> page(PageQuery<UserRequest> page) {
        UserDO bean = new UserDO();

        page.check();// 检查分页参数,并设置分页条件
        BeanUtils.copyProperties(null == page.getQueryBean() ? new UserRequest() : page.getQueryBean(), bean);
        PageHelper.startPage(page.getCurrentPage(), page.getPageSize(), page.getOrderBy());
        // 查询
        List<UserDO> doList = userDao.page(bean);
        int total = userDao.total(bean);
        // 构造返回结果
        List<UserResponse> dtoList = ConvertUtils.copyList(doList, UserResponse.class);
        dtoList.forEach(userResponse -> {
            List<RoleDO> roleDOList = roleDao.getRoleByUserId(userResponse.getId());
            userResponse.setRoleList(ConvertUtils.copyList(roleDOList, RoleResponse.class));
        });
        Page<UserResponse> pageData = new Page<>(page.getCurrentPage(), page.getPageSize(), total);
        pageData.setList(dtoList);
        return pageData;
    }

 
    }

}

7.新建controller控制层;

package 包名;


@Api(value = "userController", tags = {"用户控制层"})
@RequestMapping("user")
@RestController
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

   
    @ApiOperation(value = "添加用户")
    @PostMapping(value = "add")
    public RestResponse<Long> add(@Valid @RequestBody UserAdd userAdd) throws Exception {
        return RestResponse.ok(userService.add(userAdd));
    }

    @ApiOperation(value = "编辑")
    @PostMapping(value = "edit")
    public RestResponse<Long> edit(@Valid @RequestBody UserEdit UserEdit) throws Exception {
        return RestResponse.ok(userService.edit(UserEdit));
    }
   
    @ApiOperation(value = "删除用户色")
    @PostMapping(value = "delete")
    public RestResponse<Long> delete(@ApiParam(value = "主键", required = true) @RequestParam(value = "id", required = true) String id) throws Exception {
        return RestResponse.ok(userService.delete(id));
    }

       @ApiOperation(value = "详情")
    @GetMapping(value = "getById")
    public RestResponse<UserResponse> getById(@ApiParam(value = "主键", required = true) @RequestParam(value = "id", required = true) String id) {
        UserResponse userResponse = new UserResponse();
        UserDO userDO = userService.getById(id);
        Optional.ofNullable(userDO)
                .ifPresent(bean -> {
                    BeanUtils.copyProperties(userDO, userResponse);
                });
        return RestResponse.ok(userResponse);
    }

   

}

(调用方法)

8.运行测试文件Application

9.打开postman或者网页等其他测试接口软件,进行对数据库的增删改查。

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你的数据是树状结构,可以使用递归查询的方式来实现返回树状结构的数据。下面是一个简单的示例代码,假设你有一个名为Category的实体类,其中包含了id、name、parentId等属性: ```java @Entity @Table(name = "category") public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Column(name = "parent_id") private Long parentId; // 省略getter和setter方法 } ``` 在Spring Boot中,你可以使用JPA的@Query注解来编自定义的SQL语句。下面是一个查询返回树状结构数据的例子: ```java public interface CategoryRepository extends JpaRepository<Category, Long> { @Query(nativeQuery = true, value = "WITH RECURSIVE category_tree(id, name, parent_id, level, path) AS ( " + "SELECT id, name, parent_id, 0 as level, CAST(id AS CHAR(200)) as path " + "FROM category " + "WHERE parent_id IS NULL " + "UNION ALL " + "SELECT c.id, c.name, c.parent_id, ct.level + 1 as level, CONCAT(ct.path, '->', c.id) as path " + "FROM category c " + "JOIN category_tree ct ON c.parent_id = ct.id " + ") " + "SELECT id, name, parent_id, level, path FROM category_tree ORDER BY path") List<Object[]> findCategoryTree(); } ``` 这个查询使用了MySQL的递归查询语法,将树状结构的数据转换成了扁平化的表格数据。查询结果是一个List<Object[]>,其中每个Object[]表示一条记录,包含了id、name、parent_id、level和path五个字段。其中,path字段是用来在查询结果中排序的,它的值类似于 "1->2->3",表示层级关系。你可以通过遍历查询结果,将其转换成树形结构的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值