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!