文档章节

Idea搭建springboot+mvc+mybatis超详细,记录遇见的坑

我真是小菜鸡
 我真是小菜鸡
发布于 08/13 23:41
字数 1133
阅读 10
收藏 0

new->project->spring Initializr->next->next->选中web下的web及sql下的mybatis->项目名

1,更改maven为自己安装的mavan(file->settings->build,Execution,deployment->build Tools->mavwn,修改成自己的配置)

2,默认是springboot 2.0.4-RELEASE版本,建议换成1.5.9-RELEASE

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.5.9.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

3.首先咱们先能让项目跑起来,建一个controller来捕获请求。

@Controller
public class MainController {
    @RequestMapping("index")
    @ResponseBody
    public String index(){
        String string="HELLO WORLD";
        return string;
    }
}

这里注意:

1),文件路径,新建的controller类一定在DomeApplication启动类的平级或里面一级,否则无法注册mapped

2),此时会报错:Cannot determine embedded database driver class for database type NONE

一看就是database,一开始很蒙,还没配置怎么会报错?查资料了解到-----------

这是因为spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错

因为我仅仅只是使用spring boot来写一些很简单的例子来学习它,在Application类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

阻止spring boot自动注入dataSource bean

此时再启动就没问题了。

4,再配置mybatis

新建文件夹,dao,data,新建类User

package com.example.demo.data;

import org.springframework.stereotype.Component;

@Component
public class User {
    private String id;
    private String userId;
    private String userName;
    private String nickname;
    private String password;
    private String isAdmin;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getIsAdmin() {
        return isAdmin;
    }

    public void setIsAdmin(String isAdmin) {
        this.isAdmin = isAdmin;
    }

    @Override
    public String toString() {
        return "{"
                + "id: " + id
                + ", userId: " + userId
                + ", userName: " + userName
                + ", nickname: " + nickname
                + ", password: " + password
                + ", isAdmin: " + isAdmin + "}";
    }
}

2,新建一个controller,查询数据用

public class FinduserController {

    @Autowired
    IUserService userService;

    @RequestMapping(value = "/search", method = RequestMethod.POST)
    @ResponseBody
    public Map spiderLisSearch() {
        Map map = userService.getUserById("1");
        return map;
    }
}

顺利成章的需要创建service,及实现

public interface IUserService {
    Map getUserById(String id);
}
@Service
public class UserServiceImpl  implements IUserService{

    @Override
    public Map<String, Object> getUserById(String id) {
        SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            Map<String, Object> map = userMapper.getUserById(id);
            sqlSession.commit();
            return map;
        } finally {
            sqlSession.close();
        }
    }
}

这时发现,需要配置mybatis

public class MyBatisUtil {
    private static SqlSessionFactory sqlSessionFactory = null;
    private MyBatisUtil() {
    }
    static {
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader("mybatis-config.xml");
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage());
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    }
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }
}

再配置mybatis配置文件

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>
    <properties resource="application.properties"></properties>
    <typeAliases>
        <package name="com.example.demo.data"/>
    </typeAliases>
    <environments default="dataSource">
        <environment id="dataSource">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${dataSource.driverClassName}"/>
                <property name="url" value="${dataSource.url}"/>
                <property name="username" value="${dataSource.username}"/>
                <property name="password" value="${dataSource.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <package name="com.example.demo.dao"/>
    </mappers>
</configuration>

 

还需新建Dao层,之间操作数据库

@Mapper
public interface UserMapper {
    Map<String, Object> getUserById(String id);
}
<?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">
    <resultMap type="com.example.demo.data.User" id="usermap">
        <id column="id" property="id" />
        <result column="user_id" property="userId" />
        <result column="user_name" property="userName" />
        <result column="nickname" property="nickname" />
        <result column="password" property="password" />
        <result column="is_admin" property="isAdmin" />
    </resultMap>
    <select id="getUserById" parameterType="String" resultType="map">
        SELECT
        id,
        user_id,
        user_name,
        nickname,
        password,
        is_admin
        FROM
        demo_user
        WHERE
        id = #{_parameter }
    </select>
</mapper>

结构

测试还需配置数据源,在application.properties

dataSource.url=jdbc:oracle:thin:@localhost:1521:orcl
dataSource.username= scott
dataSource.password=123456
dataSource.driverClassName=oracle.jdbc.driver.OracleDriver

这时oracle.jdbc.driver.OracleDriver会报错,因为jdbc的问题,springboot没有提供支持,所以需要手动打入maven包。

<dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc6</artifactId>
   <version>11.2.0.3</version>
</dependency>

此时启动项目,访问查询数据的controller,发现报错,

Invalid bound statement (not found): com.example.demo.dao.dao.UserMapper.getUserById

原因是找不到UserMapping.xml

解决:在pom文件中的<build>下添加

<!--找不到map.xml-->
<resources>
   <resource>
      <directory>src/main/java</directory>
      <includes>
         <include>**/*.properties</include>
         <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>
   </resource>
   <resource>
      <directory>src/main/resources</directory>
      <includes>
         <include>**/*.properties</include>
         <include>**/*.xml</include>
         <!--坑!!!-->
         <include>**/*.html</include>
      </includes>
      <filtering>false</filtering>
   </resource>
</resources>

OK

 

配置初始页面

springboot与jsp兼容的不好,所以建议使用thymeleaf,添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

新建测试类:

@Controller
public class SampleController {

    @RequestMapping(value = "/")
    public ModelAndView test(ModelAndView mv) {
        mv.setViewName("hello");
        mv.addObject("title","欢迎使用Thymeleaf!");
        return mv;
    }
}

同时需要新建同样的名字的html文件,

因为thymeleaf会默认到templates中找对应的模板,

至此,springboot+mvc+mybatis搭建完成,明天整理整理顺序,OK

如果报错,报,找不到网页文件,就看刚在pom配置的

<resource>
   <directory>src/main/resources</directory>
   <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
      <!--坑!!!-->
      <include>**/*.html</include>
   </includes>
   <filtering>false</filtering>
</resource>

是否配置了html的扫描

© 著作权归作者所有

共有 人打赏支持
上一篇: 面试遇到的难题
下一篇: 浅谈Redis和Hbase
我真是小菜鸡
粉丝 1
博文 18
码字总数 15242
作品 0
吕梁
私信 提问
初始go语言,并搭建windows开发环境

2018.10.12来到新公司 来到新公司后,需要先熟悉现有代码。公司有一部分代码是用go实现的,所以今天把go的开发环境搭建了一下。现在记录一下遇到的坑,及解决办法。 1,第一步是安装go的开发...

我真是小菜鸡
10/13
0
0
IDEA、WebStorm最新永久激活方式

今天早上一大早打开IDEA发现激活已过期,遂开始寻找激活码。但是一直不成功,后来终于找到一种比较靠谱的激活方式。在此记录下来,以备不时之需。 目前网上现有的激活方式大概有这么三种 激活...

耒耒耒耒耒
09/24
0
0
公司环境搭建(windows10)

安装java运行环境 资源列表 idea webstorm git sourceTree edas alibaba tomcat apache tomcat xshell xftp jdk maven 安装环境变量 安装maven maven 配置文件详见资源列表 安装edas运行环境...

paascloud
01/19
0
0
Windows 下Spark 快速搭建Spark源码阅读环境

最近开始学习Spark,想搭建一个Spark的源码阅读环境。找了一些资料。如 http://m.blog.csdn.net/blog/zhongwen7710/42401445 和 http://guozhongxin.com/pages/2014/10/15/sparksourcecode....

我是彩笔
2015/11/19
0
1
2.2 Selenium 环境搭建

Java 环境搭建 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装JDK 配置Java 环境 校验是否安装完成 控制台输入: java –version 提示版......

米阳MeYoung
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

强化学习在美团“猜你喜欢”的实践

1 概述 “猜你喜欢”是美团流量最大的推荐展位,位于首页最下方,产品形态为信息流,承担了帮助用户完成意图转化、发现兴趣、并向美团点评各个业务方导流的责任。经过多年迭代,目前“猜你喜...

美团技术团队
18分钟前
1
0
docker - 常用命令

1. docker服务的启动、停止、重启 [root@localhost ~]# service docker restartRedirecting to /bin/systemctl restart docker.service[root@localhost ~]# service docker stopRedir......

细肉云吞
20分钟前
3
0
安装CentOS 6.5 系统

一、安装CentOS 6.5 系统 1、选择第一个 "Install or upgrade an existing system" 2、选择跳过 “Skip” 3、直接下一步 4、建议初学者选择中文的,工作中选择 “English” 5、键盘选择 “美...

寰宇01
33分钟前
1
0
AR+ 实时音视频通话,虚拟与现实无缝结合

今年中旬 Google 在万众期待下推出了 ARCore,能将现实与数码完美无缝地融合在一起,丰富我们的现实世界。通过它开发者可以更加快速方便地在 Android 平台开发 AR 应用,凭借 AR 技术大量产品...

七牛云
33分钟前
1
0
手把手教你实现一个 Vue 进度条组件!

最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录。 来看下 npm 搜索组件时候的效果: so 下面咱们...

我的卡
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部