Spring boot + Mybatis +alibabadruid 详细版-初步经验总结(菜鸟刚弄好使)

*Spring boot + Mybatis +alibabadruid 详细版-初步经验总结(菜鸟刚弄好使)

1、**
 **spring boot** 介绍略直接进入正题

2、
spring boot 项目的建立
2.1
java 1.8+spring tool suite 3.+mysql+mybatis
2.2
网上那种建项目的图我这没看见
在这里插入图片描述
我这就是这种,我只是把packaging改成war,next
在这里插入图片描述
网上那种选择 JDBC,MYSQL,WEB的我这也没看见,我选了图里边那三个,具体有没有不一样我也不清楚,一会百度查一查。
这块儿千万别选MyBatis Framwork,我也是上网查才知道。要不会碰到“sqlsessionfactory”什么玩意的错,我百度了半天也不会自己弄,就直接新建了一个没有选MyBatis Framwork的项目。
目前是刚入门,只求能连上数据库好使,别的以后再说。
2.2
点击finish后,等着下依赖包就行了,完事之后项目就够如下。
在这里插入图片描述
注意一下:自己建项目包要建在demo目录下,别和他同级别。原因程序指挥扫描xxxapplication同级或下属的子包,大体就这意思,想了解更多的百度。
我以前的项目用到了alibab连接池,这里边我也配置了一下。
修改pom.xml添加依赖包
在这里插入图片描述
我没有用系统生成的applicatoin.properties文件,自己也像网上用自建的application.yml
这个也没什么好说的,详情百度一下。

删除applicatoin.properties
右键resources,new->file–>application.yml
右键resources,new->file->application-dev.yml

2.2.1 application.yml代码:

spring:
 profiles:
  active: dev`

2.2.2 application-dev.yml代码

server:
 port: 8080
  
spring:
 datasource:
  url: jdbc:mysql://127.0.0.1:3306/demodb?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
  username: root
  password: 123456
  driver-class-name: com.mysql.cj.jdbc.Driver
  type: com.alibaba.druid.pool.DruidDataSource
  
mybatis: 
 config-location: classpath:mybatis-config.xml
 mapper-locations: classpath:com/example/demo/*/mapper/**.xml
 type-aliases-package: com.example.demo.*.dao
 

我粘一个完整的目录,让后所有代码贴一下
在这里插入图片描述
2.2.3 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>  
	<settings>
		<setting name="jdbcTypeForNull" value="NULL" />
		<!-- 全局映射器启用缓存 -->
		<setting name="cacheEnabled" value="true" />
		<!-- 查询时,关闭关联对象即时加载以提高性能 -->
		<setting name="lazyLoadingEnabled" value="true" />
		<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
		<setting name="aggressiveLazyLoading" value="false" />
		<!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
		<setting name="multipleResultSetsEnabled" value="true" />
		<!-- 允许使用列标签代替列名 -->
		<setting name="useColumnLabel" value="true" />
		<!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
		<setting name="useGeneratedKeys" value="false" />
		<!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->
		<setting name="autoMappingBehavior" value="FULL" />
		<!-- 对于批量更新操作缓存SQL以提高性能  -->
		<!-- <setting name="defaultExecutorType" value="BATCH" /> -->
		<!-- 数据库超过25000秒仍未响应则超时 -->
		<setting name="defaultStatementTimeout" value="25000" />
	</settings>
</configuration>

2.2.4 demoController

package com.example.demo.dev.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.dev.service.demoService;;

@RequestMapping(value = "/demo")
@RestController
public class demoController {

	private static final Logger logger = LoggerFactory.getLogger(demoController.class);

	@Autowired
	private demoService demoService;

	@RequestMapping(value = "/test", produces = { "application/json;charset=UTF-8" }, method = RequestMethod.GET)
	private String demotest() {
		System.out.println("/demo/test");
		return demoService.demotest();
	}
}  

2.2.5 demoDao


  package com.example.demo.dev.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface demoDao {

	List<String> demotest();

}													

2.2.6 demoMapper

<?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必须是dao层接口的绝对路径!!! -->
<mapper namespace="com.example.demo.dev.dao.demoDao">
	<select id="demotest" resultType="java.lang.String">
		SELECT a.content 
		from 
		wx_rich_text a 
		where 1=1
	</select>
</mapper>            										

2.2.7 demoService

package com.example.demo.dev.service;

public interface demoService {

	String demotest();

}
																	

2.2.8 demoServiceImpl

package com.example.demo.dev.service.serviceImpl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.dev.service.demoService;
import com.example.demo.dev.dao.demoDao;;

@Service
public class demoServiceImpl implements demoService {
	
	@Autowired
	private demoDao demoDao;

	private static final Logger logger = LoggerFactory.getLogger(demoServiceImpl.class);

	@Override
	public String demotest() {
		return demoDao.demotest().toString();
	}

}

2.2.9 pom.xml

<?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>1.5.21.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo-2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>demo-2</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>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>6.0.6</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</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.2.0</version>
        </dependency>
        <dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.29</version>
		</dependency>
	</dependencies>

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

</project>
						

到此,所有代码都粘贴完毕。
说一下我遇到的坑,好一顿百度才整好使
3、问题
3.1 No active profile set, falling back to default profiles: default

我的原因是application.yml中有多余的空格,上一行和下一行的缩进用空格,别用tab。
比如:

spring:
 profiles:
  active: dev						

这里边,spring是顶格,profiles之前有一个空格,active之前有两个空格。这三行的意思就是spring.profiles.active = dev,告诉服务器加载application-dev,这样便于控制加载不同的库,可以建立多个application-xxx,用active:xxx来进行控制。

3.2 sqlsessionfactory 有关问题
这个建立项目收不选Mybatis framwork就可以了,选的话网上也有对应办法,不过我没整明白
3.3 连接数据库那个Dao.java或者自建的mapper.java类上要加
@Repository
@Mapper

总结:我其实想说,新东西不一定好,了解了解就得了,都说这个spring boot多么多么简洁,配置简单,但是一到自己上手还是不行。我天真的以为只要开头自己选好什么mysql,mybatis(主坑!!!),web就完事了呢。自己根本不用再配置POM了呢。但是在实际动手过程中,还得把自己需要的依赖包从父POM中粘过来。也可能是我操作有问题。
这个项目建起来,我不认为这个新的框架比我之前用的spring mvc mybatis mysql简单到哪去。因为之前那个我熟悉,可以直接就移植过去,那个才是真不用配置,就是改改数据库链接,扫描的包名。没了。看似麻烦,实则有序而无错。
最后,建议大家如果有熟悉的框架,又可以选择的话,还是别尝试没接触过的新东西,有时间又好奇的除外。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值