欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

maven项目整合spring boot+mybatis+jwt+spring security(一)

程序员文章站 2022-04-23 15:45:32
...

maven项目整合spring boot+mybatis+jwt+spring security

这是我记录的第一篇文章 以前有问题就上百度、谷歌,但很多都是千篇一律的答案,有时看到精彩的文章过后再去找却怎么也找不到了,想着还不如把自己的经验记录下来,便于以后忘了可以查找。不怎么会写,欢迎各位能指正,话不多说,开始吧。。。。

用了多年的eclipse,这次改用idea。。
环境:win7
JDK:1.8
tomcat:8.0
maven:5.4
开发工具:idea
数据库:mysql

先用idea创建一个新的maven项目,说实话用了多年的eclipse来用idea真心觉得有点累(没办法eclipse带太多太大的项目跑不动,太卡了,所以转向idea,idea也是被同学安利来的。。)

第一步:先整合的spring boot与mybatis
maven依赖如下:

<dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
	<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
```<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.0</version>
        </dependency>

第二步:配置**application.yml**看个人喜好,用.properties也可以,这里配的是最简单的,需要其它的可以自己往里加属性。。注意格式:冒号后面必须要跟个空格,缩进不能用Tab键(我用的是最新版的idea会自己检错,有点太智能了,其它版本没试过。。。)
server:
  port: 8020 #端口号 自己配置的服务器端口
  # 数据库访问配置
  # 主数据源,默认的
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=utf8
    username: root
    password: 1234
    #driver-class-name: com.mysql.jdbc.Driver #这里是在网上看到过说要注释掉,我也试过好像不注释掉就会报错,大家可以试下,也不太清楚原理
mybatis:
  type-alises-package: com.shiyu.entity
  mapper-locations: classpath:mapper/*.xml
debug: false

先贴上事个项目结构(https://img-blog.csdnimg.cn/20190906090815954.png)

第三步:建实体类,dao层,service,controller(个人认为导入正确的包很重要)
**entity**

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;

@Entity
@Table(name=“t_user”)
public class User implements Serializable {

private static final long serialVersionUID = 2944521132026567122L;
@Id
@GeneratedValue
private Integer user_id;
private String user_name;
private String password;
dao层要吐槽一下这个JpaRepository,天呐,因为是第一次用这个包,不熟悉,各种坑(最坑的是一定按照它的格式来书写方法名参数名,实在用不习惯直接弃了。。)
import com.test.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.data.jpa.repository.JpaRepository;

@Mapper
public interface UserDao {//extends JpaRepository<User,Long>

    User findByUsername(@Param("username") String username);
    void insertUser(@Param("username") String username,@Param("password")String password);


service层(这里偷个懒,就不写接口了,直接上实现类)
import com.test.dao.UserDao;
import com.test.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author Carin 
 **/
@Service
public class UserService {
    @Autowired
    private UserDao userDao;//这个地方要说下,idea给我个红线,说是不能自动注入,这个bean找不到,但我运行项目没问题,也不知道为什么 			//(Could not autowired,No beans of 'UserDao' type found)

    public User findUserByname(String username){
        return userDao.findByUsername(username);
    }
 
    public void insertJwtUser(String usernmae,String passord){
        userDao.insertUser(usernmae,passord);
    }
}

**controller层**

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;

/**

  • @author Carin
    **/

@RestController
@RequestMapping("/user")
public class UserController {

@Autowired
private UserService userservice;

@RequestMapping("/hello")
public String hello(){
    return "hello";
}

@RequestMapping("insert")
public String testInsert(){
    userservice.insertService();
    return "insert successfaul";
}
**然后是mapper.xml文件**

<?xml version="1.0" encoding="UTF-8"?> select * from t_user where user_name=#{name}
<select id="findByUsername" resultType="com.shiyu.entity.User">
    select * from t_user where user_name=#{username}
</select>

<insert id="insertUser">
    insert into t_user(user_name,password,phone) values(#{username},#{password},"")
</insert>
```

写到这里再写个启动类就可以先测试一下啦。。
spring boot启动类

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@MapperScan("com.test.dao")
public class Application extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

到这里ok,启动成功,可以访问http://localhost:8080/项目名/user/hello,idea会自动弹出一个窗口到你设置的接口入口
值得注意的是,引用的包名类名一定要写对哈 。。直接复制是最好的,还有各个参数名,因我这里是整个项目搭得差不多了才想起来写的这篇文章,代码段贴得有点不整洁、差异,见谅哈.。
要继续的请看下一篇文章整合jwt+spring security