springboot+mybatis+mysql

   222

   springboot+mybatis+mysql实现本地存储数据,为web提供接口的简单demo整理

一、开发工具:

    STS (spring-tool-suite):
    
        配置spring boot: https://baijiahao.baidu.com/s?id=1609044252023906449&wfr=spider&for=pc
        官网:https://spring.io/tools3/sts/
        工具包下载:http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/e4.6/spring-tool-suite-3.8.1.RELEASE-e4.6-win32-x86_64.zip
        下载maven地址是http://maven.apache.org/download.cgi
        maven的配置参考:https://blog.csdn.net/qq_19259415/article/details/78752773
        
    IDEA(IntelliJ IDEA):
    
        官方地址:https://www.jetbrains.com/    (下载IntelliJ IDEA)

    我这里选择用IDEA来开发,因为这个算是比较主流的工具,也是jetbrains出的一个开发工具,用起来比较顺手

二、创建项目https://start.spring.io/  (通过spring start创建初始一个项目,也可以在IJ里配置一个spring start插件一样创建)

    (1)为啥用start.spring创建:省去很多必须的配置步骤
    
    (2)使用start.spring配置好,然后下载初始的项目代码用开发工具导入:
    
        STS:第一个项目,SpringBoot项目的pom.xml文件无故报错:
            解决办法整理:https://blog.csdn.net/u010326875/article/details/101028935
    
        IDEA: Error:(3, 32) java: 程序包org.springframework.boot不存在
            导入项目也会报错,不过我这边尝试了下,网络不好,所以maven的一些依赖没有下载下来导致报错。确保网络OK,多尝试几次就可以了

三、测试初始项目:
    创建Controller目录在  Application 文件同级目录下!
    然后再controller里创建文件,添加代码:

package com.bai.blog.controler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestApplication {
	@RequestMapping("/test")
	public String init(){
		return "hello 漠天!";
	}
}

    然后再application文件右击启动,然后再控制台查看端口,在浏览器访问:http://localhost:8080/test

四、下载数据库然后安装配置

    安装配置:https://blog.csdn.net/xiezhiming1234/article/details/82860339
    
    安装成功后,可以通过mysql的可视化工具来创建表,也可以用sql语句来创建表,比如:

        use personalblog;
        create table blog_user(id int PRIMARY KEY AUTO_INCREMENT,userName varchar(20),phone varchar(20) NOT NULL,password varchar(30) NOT NULL,sex varchar(10) DEFAULT 'male',description varchar(100))

  3

    操作数据库的可视化工具navicat:

   破解工具:https://blog.csdn.net/WYpersist/article/details/86530973

   链接:https://pan.baidu.com/s/1eFVLzno9Nz69oVCN35LnlQ 
   码:zoxo 
 

五、配置和连接数据库:

    参考:https://blog.csdn.net/weixin_41496975/article/details/83034063
        # 难点映射不成功,老是出问题,不过还是要细心检pom.xml、mapper.xml、User.class、Dao.interface这几个对应的方法名称id啥的保证一致,重启服务就可以
        # 第二个就是配置数据库的url后面要加上编码的配置否则会访问失败,报乱码错误

    (1)配置数据库的datasource:src/main/resouces/application.properties:

server.port=8080

#访问本地服务指定端口号
server.port=8080

#配置数据库url,这里数据库的后面要加上编码格式,不然会报错
spring.datasource.url = jdbc:mysql://localhost:3306/personalblog?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

#数据库名称
spring.datasource.username = root

#数据库密码
spring.datasource.password = xxxxxxxxxxxx

#指定mysql的jdbc驱动
spring.datasource.driverClassName =com.mysql.cj.jdbc.Driver

#mapper文件路径
mybatis.mapper-locations = classpath:com/bai/blog/dao/**/mapper/*.xml

##对应实体类所在路径
mybatis.typeAliasesPackage=com.bai.blog.bean


    (2)配置pom.xml数据的依赖:

<dependencies>

	--------------

	<!--mysql db-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency>
	<!-- MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 -->
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>1.3.2</version>
	</dependency>

	<!--  下面三个引用mapper映射来用  -->
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-core</artifactId>
		<version>2.9.6</version>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>2.9.6</version>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-annotations</artifactId>
		<version>2.9.6</version>
	</dependency>
	
</dependencies>

<build>
	<!--放置在dao下的话要在这里配置,让springboot启动时去扫描,让mapper可以扫描到,并且和dao接口匹配-->
	<resources>
		<resource>
			<directory>${basedir}/src/main/java</directory>
			<includes>
				<include>**/*.xml</include>
			</includes>
		</resource>
	</resources>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

       保存


    (3)处理调用数据库的操作和准备的实体类和方法:

             mapper.xml(映射java dao接口方法)、
             User.class(数据的实体类)、
             UserDao.interface(dao接口方法)、
            TestApplication.class(controll方法,提供接口给web调用)
             j
             其他类不用动;

        (一)     mapper.xml(映射java dao接口方法):

<?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">
<!-- namespace用于绑定Dao接口 -->
<mapper namespace="com.bai.blog.dao.UserDao">

    <resultMap id="user" type="com.bai.blog.bean.User"/>
    <parameterMap id="user" type="com.bai.blog.bean.User"/>

    <!-- 查询名字记录sql -->
    <select id="selectUserByIphone" parameterType="String" resultType="user" resultMap="user">
        SELECT * FROM user WHERE iphone = #{iphone}
    </select>

    <!-- 使用alias自定义的parameterType-->
    <insert id="insertUser" parameterType="com.bai.blog.bean.User">
        INSERT INTO user (iduser,userName,password,iphone) VALUES (#{iduser},#{userName},#{password},#{iphone})
    </insert>

</mapper>

     (二)直接在下面的dao文件里sql语句操作:

@Mapper
public interface VerifyCodeDao {

    String TABLE_NAME =  " verify_code ";//表名
    String TABLE_FIELDS = " uniqueFlag, verifyCode, expired ";//表中的属性字段
    String SELECT_FIELDS = TABLE_FIELDS;

    //添加数据
    @Insert({"insert into", TABLE_NAME, "(",TABLE_FIELDS, ") values (#{uniqueFlag}, #{verifyCode}, #{expired})"})
    int addCode(VerifyCodeBean verifyCodeBean);

    //查询数据
    @Select({"select", SELECT_FIELDS," from", TABLE_NAME, " where verifyCode = #{verifyCode}"})
    VerifyCodeBean selectByCode(String code);

    //更新数据
    @Update({"update", TABLE_NAME, " set expired = #{expired} , verifyCode = #{verifyCode} where uniqueFlag = #{uniqueFlag}"})
    void updateStatus(@Param("expired") Date expired, @Param("verifyCode") String verifyCode, @Param("uniqueFlag") String uniqueFlag);

    //删除数据
    @Delete({"delete from",TABLE_NAME,"where verifyCode = #{verifyCode}"})
    void deleteCode(String verifyCode);
}


             User.class(数据的实体类):

package com.bai.blog.bean;

public class User {
    private int iduser;

    public int getIduser() {
        return iduser;
    }

    public void setIduser(int iduser) {
        this.iduser = iduser;
    }

    private String userName;
    private String password;
    private String iphone;
    private String sex;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getIphone() {
        return iphone;
    }

    public void setIphone(String iphone) {
        this.iphone = iphone;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}


             UserDao.interface(dao接口方法):

package com.bai.blog.dao;
import com.bai.blog.bean.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserDao {

    User selectUserByIphone(String iphone);

    void insertUser(User user);
}


            TestApplication.class(controll方法,提供接口给web调用):

package com.bai.blog.controler;

import com.bai.blog.bean.User;
import com.bai.blog.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestApplication {
    @Autowired
    private UserDao userMapper;

    //http://localhost:8888/addUser?username=xiaoli2&password=123&phone=152
    @RequestMapping("/addUser")
    public String addUser(String username,String password,String phone){
        User user = new User();
        user.setIduser(1);
        user.setUserName(username);
        user.setIphone(phone);
        user.setPassword(password);
        userMapper.insertUser(user);
        return "success!";
    }

    //http://localhost:8888/getUser?iphone=152
    @RequestMapping("/getUser")
    public String getUser(String iphone){
        User user =userMapper.selectUserByIphone(iphone);
        return user!=null ? iphone+"的密码是:"+user.getPassword():"不存在手机号为"+iphone+"的用户";
    }

}



    (4)web调用本地服务接口http://localhost:8080/getUser?phone=152

       5

             也可以用移动端来执行本地ip来调用本地服务


    (5)demo源码 https://download.csdn.net/download/u010326875/11804408

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漠天515

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值