Spring Boot 整合微信小程序并实现简单CRUD

环境准备

后端

开发工具:IDEA 2019.02
开发环境:jdk1.8,maven,mysql 5.7
技术栈:spring boot 2.0 ,mybatis

前台

开发工具:微信开发者工具最新版
开发环境:微信小程序(wxml,json,js,wxss)

数据准备

需要初始化数据库并且创建两个简单的数据库表。(前期设计不足,有冗余,可合并一张表)
login表,主要存放三个字段,id,name,password
user表,主要存放三个字段,id,name,age

开发

目录结构:
1.微信小程序
Spring Boot 整合微信小程序并实现简单CRUD_第1张图片

2.java后端
Spring Boot 整合微信小程序并实现简单CRUD_第2张图片

前端开发

1.登录页面

<view>

  <form bindsubmit='doLogin'>
            
            <view class="inputView"> 
                <label class="loginLabel">账号label>
                <input name="name" value='xiaowang' class="inputText" placeholder="请输入账号" />
            view>
            
            <view class="line">view>
            <view class="inputView">
                <label class="loginLabel">密码label>
                <input name="password" value='123456' class="inputText" password="true" placeholder="请输入密码" />
            view>
            
            <view class="line">view>
            
            <view class='backColor'>
                <button class="loginBtn" formType="submit"  open-type='getUserInfo' >登录button>
            view>
        form>

view>

Spring Boot 整合微信小程序并实现简单CRUD_第3张图片

2.登录请求

  doLogin:function(e){

    wx.request({
      url:"http://localhost:8080/doLogin",
      method:"post",
      header:{
        "Content-Type": "application/x-www-form-urlencoded" 
      },
      data:{
        name:e.detail.value.name,
        password:e.detail.value.password
      },
      success:function(res){
        console.log(res);
        if(res.data.code == 200){
          if(res.data.result=="登录成功"){
            console.log("登陆成功!");
            
            wx.reLaunch({
              url: '../list/list'
            })
          }else{
            wx.showToast({ title: '用户名或密码有误', icon: 'none', duration: 2000 })
            console.log("登陆失败!");
          }
        }
      },
      fail:function(res){
        console.log("登陆失败!");
      }
      
    })

  }

其余增删改查的相关操作页面都是类似的,代码省略。

后台开发

1.创建springboot项目,导入相关依赖

		 <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-thymeleafartifactId>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.1.14version>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.42version>
            <scope>runtimescope>
        dependency>

        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.1.0version>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

2.修改配置

# Spring Boot 的数据源配置
spring:
  datasource:
    name: wx
    url: jdbc:mysql://192.168.1.105:3306/wechat?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: Root1234
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
# mybatis-plus相关配置
mybatis-plus:
  # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
  mapper-locations: classpath:mapper/*.xml
  # 以下配置均有默认值,可以不设置
  global-config:
    db-config:
      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: auto
      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
      field-strategy: NOT_EMPTY
      #数据库类型
      db-type: MYSQL

  # 指定实体类的包
  type-aliases-package: com.wechatspring.springbootwechat.entity
  configuration:
    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: true
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    call-setters-on-nulls: true
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


# PageHelper分页插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

3.开发登录以及查询接口

@RestController
public class LoginController {
    @Autowired
    private LoginService loginService;
    @PostMapping("/doLogin")
    public Map doLogin(String name, String password){
        Map map = new HashMap();
        int count = loginService.login(name,password);
        if (count > 0){
            map.put("code",200);
            map.put("result","登录成功");
            System.out.println("登录成功");
        }else {
            map.put("result","no");
        } return map;
    }
}
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
     //查询全部
     @GetMapping("/list") public Object list(){
        System.out.println("查询成功"); return userService.list();
    }
     // 根据id删除

      @GetMapping("/delete") public boolean delete(Integer id){
        System.out.println("删除成功"); return userService.removeById(id);
    }
     //  根据id查询
    @GetMapping("/byid") public Object byid(Integer id){
        System.out.println("查询成功"); return userService.getById(id);
    }
    //修改
    @PostMapping("/update") public boolean update(@RequestBody User user){
        System.out.println("修改成功"); return userService.updateById(user);
    }
    //添加
    @PostMapping("/add") public boolean add(@RequestBody User user){
        System.out.println("添加成功"); return userService.save(user);
    }
}

4.相应的功能实现
登录(使用原生mybatis)

public interface LoginService {
    int login(String name,String password);
}
@Service
public class LoginServiceImpl implements LoginService {
    @Autowired
    private LoginDao loginDao;
    @Override
    public int login(String name, String password) {
        return loginDao.doLogin(name, password);
    }
}
public interface LoginDao {
    @Select("select count(*) from login where name = #{name} and password = #{password}")
    int doLogin(@Param("name") String name,@Param("password") String password);
}

增删改查(使用mybatis-plus)

public interface UserService extends IService<User> {
}
@Service
@Transactional
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

@Repository
public interface UserMapper extends BaseMapper<User> {
}

mapper文件

<mapper namespace="com.wechatspring.springbootwechat.mapper.UserMapper">

    <resultMap id="UserResultMap" type="com.wechatspring.springbootwechat.entity.User">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
    resultMap>
mapper>

启动

1.启动springboot项目中的main方法,启动成功后,使用微信小程序登录。

查看后台日志,可以看到登录信息。
Spring Boot 整合微信小程序并实现简单CRUD_第4张图片
同时在登录成功后,小程序跳转到查询列表页面。
Spring Boot 整合微信小程序并实现简单CRUD_第5张图片
对应的编辑和删除也可以实现。

参考自:
作者:安详的苦丁茶
链接:https://www.cnblogs.com/ckfeng/p/12812214.html

你可能感兴趣的:(学习,spring,boot,java)