SpringBoot整合微信支付开发在线教育(一)建立工程、连接数据库、完成增删改查

此系列是学习 Spring Boot 2.x整合微信支付在线教育网站高级项目实战(https://www.bilibili.com/video/av58679382/?p=1)的视频笔记及个人理解+代码。

GitHub地址:https://github.com/wannengdek/WeChatVideo

如果你觉得我的代码或者博客对你有所帮忙,麻烦帮忙点一棵小星星。

1、建立工程

导入 web、mysql、thymeleaf、mybatis等jar包

pom.xml

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

		<!-- 默认就有的依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency>

		<!-- 引入starter-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

		<!-- MySQL的JDBC驱动包	-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<!-- 引入第三方数据源 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.6</version>
		</dependency>
		<!-- 分页插件依赖 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>4.1.0</version>
		</dependency>
		<!-- JWT相关 -->
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt</artifactId>
			<version>0.7.0</version>
		</dependency>



	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

中加入以下配置:

#=================================微信相关==================
#公众号
wxpay.appid=wx5beac15ca207cdd40c
wxpay.appsecret=554801238f17fdsdsdd6f96b382fe548215e9


#spring.datasource.driver-class-name =com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/weixin?useUnicode=true&characterEncoding=utf-8
spring.datasource.username =root
spring.datasource.password =root
#如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource)
spring.datasource.type =com.alibaba.druid.pool.DruidDataSource


#增加打印sql语句,一般用于本地开发测试
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

# mybatis 下划线转驼峰配置,两者都可以
#mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.map-underscore-to-camel-case=true

可能会有依赖报错,暂时不管,一会导入。

2、建立包结构如下图、连接数据库

导入相关sql ,地址:https://github.com/wannengdek/WeChatVideo/tree/master/src/main/resources

直接打开复制里面的sql语句,运行即可。

idea支持连接数据库后自动生成实体类以及相应的get、set方法。

点击test Connection 如果显示绿色对号就是连接成功,点击ok

连接成功之后可以看到刚才生成的表,全部选中右键

箭头指向的地方改成自己的项目中实体类存放的包。

选中刚才的所有表,右键

点击之后就可以在对应得包生成实体类。

使每个实体类都实现  Serializable接口,进行序列化 以便实现缓存。

 

3、添加增删改查方法、使用postman进行测试

在mapper中添加相应的mapper类

@Mapper
public interface VideoMapper {

    @Select("select * from video")
    List<Video> findAll();
    
    @Select("SELECT * FROM video WHERE id = #{id}")
    Video findById(int id);

    @Update("UPDATE video SET title=#{title} WHERE id =#{id}")
    int update(Video Video);

    @Delete("DELETE FROM video WHERE id =#{id}")
    int delete(int id);

    @Insert("INSERT INTO `video` ( `title`, `summary`, " +
            "`cover_img`, `view_num`, `price`, `create_time`," +
            " `online`, `point`)" +
            "VALUES" +
            "(#{title}, #{summary}, #{coverImg}, #{viewNum}, #{price},#{createTime}" +
            ",#{online},#{point});")
    @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
    // 技巧:保存对象,获取数据库自增id
    int save(Video video);

在service包中添加接口类,在serviceImpl中添加相应实现类

@Service
public class VideoServiceImpl implements VideoService {

    @Autowired
    private VideoMapper videoMapper;
    @Override
    public List<Video> findAll() {
        return videoMapper.findAll();
    }
    @Override
    public Video findById(int id) {
        return videoMapper.findById(id);
    }

    @Override
    public int update(Video video) {
        return videoMapper.update(video);
    }

    @Override
    public int delete(int id) {
        return videoMapper.delete(id);
    }

    @Override
    public int save(Video video) {
        int row=videoMapper.save(video);
        System.out.println(row);
        return videoMapper.save(video);
    }
}

controller包中添加相应的地址映射

对于视频的管理,普通用户只能查看和查找,管理员则可以增加、删除、更新、查看。所以新建2个controller

@RequestMapping("/avi/v1/video")
public class VideoController {


	@Autowired
	private VideoService videoService;
	/**provider
	 * 分页接口
	 * @param page 当前第几页,默认是第一页
	 * @param size  每页显示几条
	 * @return
	 */
	@GetMapping("page")
	public Object pageVideo(@RequestParam(value = "page",defaultValue = "1")int page,
							@RequestParam(value = "size",defaultValue = "5")int size){

		PageHelper.startPage(page,size);
		List<Video> list = videoService.findAll();
		PageInfo<Video> pageInfo = new PageInfo<>(list);
		Map<String,Object> data = new HashMap<>();
		data.put("total_size",pageInfo.getTotal());//总条数
		data.put("total_page",pageInfo.getPages());//总页数
		data.put("current_page",page);//当前页
		data.put("data",pageInfo.getList());//数据
		return data;
	}


	/**
	 * 根据Id找视频
	 * @param videoId
	 * @return
	 */
	@GetMapping("find_by_id")
	public Object findById(@RequestParam(value = "video_id",required = true)int videoId){

		return videoService.findById(videoId);
	}


}

第一个方法为使用pageHelper的分页查找方法,关于pageHepler自荐我的博客SpringBoo集成PageHelper+thymeleaf 显示到页面

管理员controller

@RestController
@RequestMapping("/admin/api/v1/video")
public class VideoAdminController {
    @Autowired
    private VideoService videoService;

    /**
     * 根据id删除视频
     * @param videoId
     * @return
     */
    @DeleteMapping("del_by_id")
    public Object delById(@RequestParam(value = "video_id",required = true)int videoId){

        return videoService.delete(videoId);
    }

    /**
     * 根据id更新视频
     * @param videoId
     * @param title
     * @return
     */
    @PutMapping("update_by_id")
    public Object update(@RequestBody Video video){
        return videoService.update(video);
    }


    /**
     * 保存视频对象
     * @param video
     * @return
     */
    @PostMapping("save")
    public Object save(@RequestBody Video video){

        return videoService.save(video);
    }
}

使用postman测试

查询分页数据

查询id=1的视频

删除id=10的视频

 

 

 

如有不正之处,还请指出,谢谢Thanks♪(・ω・)ノ

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值