基于SpringBoot开发一个Restful服务,实现增删改查功能 (2)

这里写图片描述

2.2 自定义配置文件

一般我们需要一些自定义的配置,例如配置jdbc的连接配置,在这里我们可以用 application.properties 进行配置。数据源实际的配置以各位的为准。

## 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/springBoot?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ## Mybatis 配置 # 配置为 com.pancm.bean 指向实体类包路径。 mybatis.typeAliasesPackage=com.pancm.bean # 配置为 classpath 路径下 mapper 包下,* 代表会扫描所有 xml 文件。 mybatis.mapperLocations=classpath\:mapper/*.xml 三、代码编写

:

3.1 Pojo类User的编写

来到重点的代码这快了。
我们开始先编写pojo类,对应数据库中的t_user表。
代码如下

public class User { /** 编号 */ private int id; /** 姓名 */ private String name; /** 年龄 */ private int age; public User(){ } public class User { /** 编号 */ private int id; /** 姓名 */ private String name; /** 年龄 */ private int age; public User(){ } // getter和 setter 略 } 3.2 Dao层编写

在以前的Dao层这块,hibernate和mybatis 都可以使用注解或者使用mapper配置文件。在这里我们使用spring的JPA来完成CRUD。

说明:
一般有两种方式实现与数据库实现CRUD:
第一种是xml的mapper配置。
第二种是使用注解,@Insert、@Select、@Update、@Delete 这些来完成。本篇使用的是第二种

import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import org.springframework.data.repository.query.Param; import com.pancm.bean.User; @Mapper public interface UserDao { /** * 用户数据新增 */ @Insert("insert into t_user(id,name,age) values (#{id},#{name},#{age})") void addUser(User user); /** * 用户数据修改 */ @Update("update t_user set name=#{name},age=#{age} where id=#{id}") void updateUser(User user); /** * 用户数据删除 */ @Delete("delete from t_user where id=#{id}") void deleteUser(int id); /** * 根据用户名称查询用户信息 * */ @Select("SELECT id,name,age FROM t_user") // 返回 Map 结果集 @Results({ @Result(property = "id", column = "id"), @Result(property = "name", column = "name"), @Result(property = "age", column = "age"), }) User findByName(@Param("name") String userName); /** * 根据用户ID查询用户信息 * */ @Select("SELECT id,name,age FROM t_user") User findById(@Param("id") int userId); /** * 根据用户age查询用户信息 */ @Select("SELECT id,name,age FROM t_user where age = #{userAge}") User findByAge( int userAge); }

这个接口使用的注解个人理解:
mapper : 在接口上添加了这个注解表示这个接口是基于注解实现的CRUD。
Results: 返回的map结果集,property 表示User类的字段,column 表示对应数据库的字段。
Param:sql条件的字段。
Insert、Select、Update、Delete:对应数据库的增、查、改、删。

3.3 Service 业务逻辑层

这块和hibernate、mybatis的基本一样。
代码如下:

接口

import com.pancm.bean.User; /** * * Title: UserService * Description:用户接口 * Version:1.0.0 * @author pancm * @date 2018年1月9日 */ public interface UserService { /** * 新增用户 * @param user * @return */ boolean addUser(User user); /** * 修改用户 * @param user * @return */ boolean updateUser(User user); /** * 删除用户 * @param id * @return */ boolean deleteUser(int id); /** * 根据用户名字查询用户信息 * @param userName */ User findUserByName(String userName); /** * 根据用户ID查询用户信息 * @param userId */ User findUserById(int userId); /** * 根据用户ID查询用户信息 * @param userAge */ User findUserByAge(int userAge); }

实现类

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.pancm.bean.User; import com.pancm.dao.UserDao; import com.pancm.service.UserService; /** * * Title: UserServiceImpl * Description: * 用户操作实现类 * Version:1.0.0 * @author pancm * @date 2018年1月9日 */ @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public boolean addUser(User user) { boolean flag=false; try{ userDao.addUser(user); flag=true; }catch(Exception e){ e.printStackTrace(); } return flag; } @Override public boolean updateUser(User user) { boolean flag=false; try{ userDao.updateUser(user); flag=true; }catch(Exception e){ e.printStackTrace(); } return flag; } @Override public boolean deleteUser(int id) { boolean flag=false; try{ userDao.deleteUser(id); flag=true; }catch(Exception e){ e.printStackTrace(); } return flag; } @Override public User findUserByName(String userName) { return userDao.findByName(userName); } @Override public User findUserById(int userId) { return userDao.findById(userId); } @Override public User findUserByAge(int userAge) { return userDao.findByAge(userAge); } } 3.4 Controller 控制层

控制层这块和springMVC很像,但是相比而言要简洁不少。
关于控制层的注解个人的理解如下:

RestController:默认类中的方法都会以json的格式返回。
RequestMapping: 接口路径配置。
method : 请求格式。
RequestParam: 请求参数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjzfw.html