使用idea5分钟生成一个SpringBoot-Mybatis项目

       在学校时自己花了好几天的时间搭建了一个springMVC项目,繁多的配置文件转眼就往记了,工作后接触的公司项目配置文件更是复杂到望而却步,自称java工程师,却连建个项目都不行,一度怀疑自己的能力。

      当然办法总是比困难多,从eclipse到sts,后来有了Intellij IDEA,后来又有了SpringBoot,还有很多便利的开发工具包。springboot以及自带的spring data jpa其实可以解决大部分开发问题,但面对复杂业务逻辑写大量的原生sql,想想还是找老朋友mybatis吧。

        1.项目基本搭建,如图新建项目,默认下一步

2.给项目取一个响亮的名字

3.选择依赖,这儿其实就是在pom中添加maven依赖,选择需要的,也可以不添加在后面直接加到pom中。

因为是简单测试项目,如图:我选择了红框中的4个,其中core的Lombok纯属个人爱好。下一步,Finish等待maven构建完成

4.启项目。前面3步大功告成,现在我们来启下项目感受下科技带来的成果

卧槽,怎么新建的项目就启不来,这尼玛玩呢,说好的一键到位的呢。

现在把这个错误复制出去百度,看吧大家都有这个问题,那就不是问题啦

5.配置application.yml

前面的问题是因为我们引入了mybatis-spring-boot-starter而没给他配置数据源。将resource下的application.properties重命名为application.yml,添加如下配置。

server:
  port: 8080

mybatis:
  mapperLocations: classpath:mapper/*.xml
  #typeAliasesPackage: com.example.demo.entity

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/world
    #?serverTimezone=GMT&useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver
    dbcp2:                                          # 进行数据库连接池的配置
      min-idle: 5                                   # 数据库连接池的最小维持连接数
      initial-size: 5                               # 初始化提供的连接数
      max-total: 5                                  # 最大的连接数
      max-wait-millis: 200                          # 等待连接获取的最大超时时间
      type: com.alibaba.druid.pool.DruidDataSource  # 阿里druid 数据源

注意:server,mybatis,spring要顶格写,yml文件有只能提示的字下面有阴影的试着调下前后位置,

typeAliasesPackage是配置包位置的,一般不需要。
serverTimezone=GMT&useSSL=false当用的是mysql8数据库时可能会报时区错误问题,则需要在url结尾加上这段,或者更改mysql的时区,此处不展开

因为用到了阿里的druid数据源,需要在pom中添加依赖。完整的pom文件如下。当然也可以不加阿里的数据源,不影响这次的测试结果

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.12</version>
</dependency>
<?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.1.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo1</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-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.12</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</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>

6.测试application.yml的数据源是否配置成功

打开test编写如下测试代码并运行

@RunWith(SpringRunner.class)
@SpringBootTest
public class Demo1ApplicationTests {
	@Resource
	private DataSource dataSource;
	@Test
	public void contextLoads() {
		System.out.println(this.dataSource);
	}
}

如果测试通过则表示配置成功。不通过回去仔细看下是否有空格,或者退格是否符合yml规范

7.配置项目结构包

前面我们已经配置了数据源,还配置了mybatis的配置文件路径,是不是发现项目里没有mapper这个文件夹,这就开始建了,目录结构如下图

8.完善配置

mybatis最重要的就是把DAO和配置文件映射关联起来,mapper里放mybatis的配置文件,我们在DemoApplication中添加dao的扫描@MapperScan("com.example.demo1.dao"),如下图。

mybatis会根据com.example.demo1.dao匹配mapper里mybatis配置文件的namespace,如不一致则会报错。

9.添加测试代码,这里推荐一款mybatis插件:better-mybatis-generator,使用非常简单

下载地址:https://github.com/kmaster/better-mybatis-generator

Entity

@Data
public class City {
    private int id;
    private String name;
    private String countryCode;
    private String district;
    private int population;
}

Service

public interface CityService {
    List<City> list();
}

Dao

public interface CityDao {
    List<City> list();
}

ServiceImpl

@Service
public class CityServiceImpl implements CityService {

    @Autowired
    private CityDao cityDao;

    @Override
    public List<City> list() {
        return cityDao.list();
    }
}

Controller

@RestController
@EnableAutoConfiguration
@RequestMapping("/world")
public class IndexController {

    @Autowired
    private CityService cityService;

    @RequestMapping("/index")
    public List<City> index(){
        return cityService.list();
    }
}

Mapper

<?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.demo1.dao.CityDao">
    <resultMap id="BaseResultMap" type="com.example.demo1.entity.City" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="countryCode" property="countryCode" jdbcType="VARCHAR" />
        <result column="district" property="district" jdbcType="VARCHAR" />
        <result column="population" property="population" jdbcType="INTEGER" />
    </resultMap>

    <sql id="base_sql">
      id,name,countrycode,district,population
    </sql>
    
    <select id="list" resultMap="BaseResultMap">
        SELECT <include refid="base_sql"/>
        from city
    </select>
</mapper>

10.万事具备,见证奇迹的时刻到了

 

结语:前后10步,看起来挺吓人,其实也就复制粘贴的事情,熟练工5分钟应该是够了,等项目跑起来了再想为什么吧。

人无完人,教程也是,难免有错漏,欢迎提问丢鸡蛋、一起学习共同进步嘛,认识新朋友也是很开心的。

转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值