软件使用的是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或者网页等其他测试接口软件,进行对数据库的增删改查。