口号:省钱小帮手
1、开启一个spring boot项目,用于做后端服务器
2、用微信小程序作为前端,小程序实现扫描入库和输入入库两种模式
3、实现获取淘宝、京东(特别是京东到家)指定商品的东西的价格的功能,有相关的接口
扩展功能:
所有有价格波动和趋势的都可以集成进来,对比分析各家价格趋势,给用户提供最好的购物咨询服务。

1、安装好数据库mysql之后,由于msyql8之后修改了之前的加密系统,所以得进行修改,修改步骤如下:

(1)将加密方式改为旧的,在配置文件C:\ProgramData\MySQL\MySQL Server 8.0的my.ini中添加如下
[mysqld]
default_authentication_plugin=mysql_native_password
(2)使用了新的加密方式,改为旧的加密方式,而root用户也要进行相应的更改才可以,
因为root用户还是新的加方式,所以使用alter语句改为重置密码来覆盖新的加密方式的密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

注意:引号里面的passwrod应该替换成你自己的Password,然后使用datagrid或者navicat就可以进行连接了,我这里使用datagrid。
使用datagrid连接数据库的时候需要下载相关的驱动,先测试是否能够连通,如果可以说明成功。也可以使用idea进行数据库连接。

在项目中加入Mysql的依赖:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>

mysql的版本应该根据自己环境中的mysql版本来决定,我的mysql是8.0版本,所以驱动也用8版本的,同时

配置:

#数据库相关
spring.datasource.name=shengqian
spring.datasource.username=root
spring.datasource.password=kexuejia123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shengqian?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false

#mybatis相关
#mybatis配置
mybatis.config-location=classpath:mybatis/mybatic-config.xml
mybatis.mapper-locations=classpath*:mybatis/mapper/*.xml

在数据库中创建好几个表,然后实现相对应的实体和操作实体的mapper
然后在mybatis-config.xml中写入

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<!-- 系统类型 -->
<typeAlias alias="Integer" type="java.lang.Integer"/>
<typeAlias alias="Long" type="java.lang.Long"/>
<typeAlias alias="String" type="java.lang.String"/>
<typeAlias alias="HashMap" type="java.util.HashMap"/>
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
<typeAlias alias="ArrayList" type="java.util.ArrayList"/>
<typeAlias alias="LinkedList" type="java.util.LinkedList"/>
<!-- 自定义类型 -->
<package name="com.shengqian.demo.Entity"/>
<package name="com.shengqian.demo.dto" />
</typeAliases>
</configuration>

然后写mapper对应的xml配置文件
mybatis xml文件编写技巧

1、refid可以引入别的代码,减少重复代码的书写
2、可以构造sqlNode动态生成sql语句
3、可以使用拦截器,先生成一个默认的sql,然后使用拦截器拦截并重新生成sqlNode

定义第一个接口,用户注册 访问入口:/register

public class Path {
public static final String RRGISTER = "/register";
}

这个Path也可以改为enum类型,用来管理请求路径

然后写controller

@Controller
public class UserController {

@Autowired
private UserInfoService userInfoService;

@RequestMapping(value = Path.RRGISTER, method = RequestMethod.POST)
@ResponseBody
public Integer register(@RequestParam("username") final String name,
@RequestParam("password") final String pwd,
@RequestParam("phone") final String phone){
……
return 0;
}
}

@Controller 表明这是一个控制器,这样spring 会自动给该类生成一个bean
定义UserInfoService接口

public interface UserInfoService {
UserInfoDto getUser(String phone);
Integer addUser(UserInfoDto dto);
}

实现UserInfoService接口

@Service
public class UserInfoServiceImpl implements UserInfoService {

private UserInfoMapper userInfoMapper;

public UserInfoServiceImpl(UserInfoMapper userInfoMapper){
this.userInfoMapper = userInfoMapper;
}


@Override
public UserInfoDto getUser(String phone) {
……
return null;
}

@Override
public Integer addUser(UserInfoDto dto) {
……
return 0;
}
}

然后定义UserInfoMapper

@Mapper
@Component(value = "userinfomapper")
public interface UserInfoMapper {

UserInfoDto getUserByPhone(String phone);

void addUser(@Param("username") String userName, @Param("phone")String phone, @Param("passwordhash") String passwordhash, @Param("salt") String salt);

}

最后定义UserInfoMapper对应的.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="com.shengqian.demo.mapper.UserInfoMapper">
<resultMap id="userResultMap" type="UserInfoDto">
<id column="uid" property="uid"/>
<result column="user_name" property="username"/>
<result column="user_phone" property="phone"/>
<result column="user_pwd" property="passwordhash"/>
<result column="salt" property="salt" />
</resultMap>

<!-- 查询用户信息 -->
<select id="getUserByPhone" parameterType="String" resultMap="userResultMap">
SELECT
A.uid,
A.user_name,
A.user_phone,
A.user_pwd,
A.salt
FROM user AS A
WHERE A.user_phone = #{phone}
</select>

<select id="addUser" parameterType="UserInfoDto" resultType="Integer">
INSERT INTO user(
user_name,user_phone,user_pwd,salt
) VALUES (
#{username},#{phone},#{passwordhash},#{salt}
)
</select>
</mapper>

该接口使用到了UserInfoDto数据传输对象。就是一个简单的pojo。运行打开程序,就可以使用啦。 接下来开始定制新的接口。具体spring boot + mybatis 接口开发流程在我的上一篇博客中有详细的描述