Maison  >  Article  >  Java  >  Tutoriel de création de projet Springboot (IntelliJIDEA, springboot 2.0 +mybatis)

Tutoriel de création de projet Springboot (IntelliJIDEA, springboot 2.0 +mybatis)

不言
不言avant
2019-03-08 15:44:084730parcourir

Le contenu de cet article concerne le tutoriel de création de projet springboot (IntelliJIDEA, springboot 2.0 +mybatis). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

Environnement :

JDK8+windows10

ÉtapesNouveau module —>Spring Initializr—>suivant

1

2.

3. Vérifiez web pour le web, vous pouvez décocher sql et l'ajouter plus tard, si MyBatis est coché, une erreur comme la propriété 'sqlSessionFactory' ou 'sqlSessionTemplate' est requise sera signalée . J'ai vérifié ici pour résoudre cette erreur plus tard

Après la sélection, passez simplement à l'étape suivante jusqu'à la fin

Le fichier pom généré automatiquement est le suivant

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</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>2.0.0</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>
    </dependencies>

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

</project>

## Structure du répertoire

Comme il n'y a pas de base de données de configuration ni de fichiers, l'application est vide et le port par défaut est 8080

Nous avons besoin pour l'ignorer au démarrage Configuration de la base de données

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

Utilisez ensuite Postman pour y accéder, en indiquant que le projet est normal

4. Configurez le fichier application.yml de la base de données

server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8
  servlet:
    context-path: /
spring:
  dataSource:
    url: jdbc:mysql://localhost:3306/db-test?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false
    username: root
    password: 123456
    driverClassName: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:com/example/demo/mapper/*Mapper.xml #注意:一定要对应mapper映射xml文件的所在路径
  type-aliases-package: com.example.demo.model # 注意:对应实体类的路径
  configuration:
    call-setters-on-nulls: true # 解决使用map类型接收查询结果的时候为null的字段会没有的情况
这时候 com.mysql.jdbc.Driver 标红 说明mysql架包找不到

Supprimez 06db57cb000bdd2564c5b32a302b10e2runtime

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

Changez-le simplement par la version par défaut

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

Ensuite, driverClassName revient à la normale

导入 service dao xml (这里没有使用实体类返回,使用的是map返回,所以表我们可以随意自建)

UserController
@Controller
@RequestMapping("/usersDemo")
public class UserController {
    private static Logger log = LoggerFactory.getLogger(UserController.class);
    @Resource
    UserService userService;

    @ResponseBody
    @RequestMapping(value = "/test", produces = "application/json;charset=UTF-8", method = {RequestMethod.POST, RequestMethod.GET})
    public List<Map<String, Object>> test(){
        log.info("进入了test方法!");
        List<Map<String,Object>> list=userService.userQueryAll();
        return list;
    }
}
UserService
public interface UserService {
    List<Map<String, Object>> userQueryAll();
}
UserserviceImpl
@Service
public class UserserviceImpl  implements UserService {
    @Resource
    UserMapper userDao;
    @Override
    public List<Map<String, Object>> userQueryAll() {
        return userDao.userQueryAll();
    }
}

UserMapper

@Mapper
public interface UserMapper {
    List<Map<String, Object>> userQueryAll();
}

UserMapper.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.example.demo.dao.UserMapper">
    <select id="userQueryAll" parameterType="Map" resultType="Map">
        SELECT * FROM `users`
    </select>
</mapper>
DemoApplication
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.example.demo.dao")
@ComponentScan(basePackages = {"com.example.demo.*"})
public class DemoApplication {

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

}

D'accord,

accepter L'étape suivante consiste à démarrer

5 Démarrage

Remarque : Si exclure = {DataSourceAutoConfiguration.class}

n'est pas supprimé après l'injection de dépendances, ce qui suit une erreur sera signalée au démarrage :

Causée par : java.lang.IllegalArgumentException : la propriété 'sqlSessionFactory' ou 'sqlSessionTemplate' est requise

Raison d'erreur 1 :

很多人说 创建项目的时候勾选了mybatis导致
  实际上是这个架包的原因
如果不要的话也不能使用mybatis了 
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

Raison d'erreur 2,

dataSource.type 使用默认的连接池导致的

Solution 1 : Supprimez l'exclusion = {DataSourceAutoConfiguration.class} et il démarrera normalement

Solution 2 : Utiliser d'autres pools de connexions, tel que le pool de connexions Ali Druid

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.13</version>
</dependency>

Puis modifiez spring.dataSource.type=com.alibaba.druid.pool.DruidDataSource

dans application.yml sans supprimer exclure = {DataSourceAutoConfiguration.class }, ce qui n'a en fait pas beaucoup de sens, c'est une erreur de bas niveau

6 Continuez à démarrer, le log

est correct, et puis

comme ceci peut apparaître lors de l'accès à la base de données Erreur

org.apache.ibatis.binding.BindingException : instruction liée non valide (introuvable) : com.example.demo.dao.UserMapper .userQueryAll

Raisons possibles de l'erreur 1 L'identifiant de select dans mapper.xml est mal écrit

Solution : Vérifiez le code

<.>Cause possible de l'erreur 2. Le programme ne compile pas le fichier XML

Solution : Ajoutez du code à la construction du fichier pom.xml

<resources>
<resource>
    <directory>src/main/java</directory>
    <includes>
        <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
</resource>
</resources>
Recommencez :

Réussi

Pom final. Le fichier xml est le suivant

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer