15步通过IDEA 完成在SpringBoot中集成MyBatis,并操纵数据库

前言:

的确,Idea自带的springboot项目插件:Initializer给我们创建一个springboot项目带来了极大的便利性,但是,如果我们知道如何从一个普通的maven项目新建成springboot项目,并解决这个过程遇到的一些小问题,我相信对使用插件创建springboot项目会有一个更深的理解。

正文:

不通过现有的idea的插件initializer进行创建springboot,而是通过最原始的方式,新建普通的maven工程,然后一点一点的进行相关的配置。

第一步:file-> new module(或者file->new project)

第二步:选中maven项目,下一步:

第三步:分别点击右上角的省略号,将其设置成none。设置这个的目的是:将该模块设置成单独的模块,表示该模块不属于任何模块。

并且设置好GroupId和ArtifactId,设置后的效果如下:

第四步:点击next,并点击finish

下图错误如图所示:

正确的设置路径:

第五步:查看当前的目录结构如下:

可以看到很简单,什么都没有,只有一个pom.xml,截图如下:

第六步:因为我们采用的是使用的是最普通的创建maven项目的方式来创建springboot的项目,所有在项目中并没有springboot的父级依赖,需要手动添加springboot的父级依赖以及添加mysql的依赖包和mybatis的依赖包。父级依赖添加成功之后,该项目就变成了springboot项目。

第七步:为了测试springboot,需要使用web进行测试,所以需要添加web的启动依赖包。如果需要其他的包,比如测试依赖包,jsp的包,都需要在pom.xml中添加。至此,pom.xml的依赖配置完毕。

第八步:在Springboot的核心配置文件application.properties中配置MyBatis的Mapper.xml文件所在的位置:

SpringBoot的核心配置文件在src/main/resource文件夹中,由于是采用的是最普通的maven创建项目的方式,所以,这里需要新建application.properties文件。

首先,创建文件:

然后,点击file之后,出现下图:

然后,在src/main/java目录下创建一个包,来放置mapper.xml的文件。

最后,在application.properties中配置MyBatis的Mapper.xml文件所在的位置,即将上面的mapper的包中的所有.xml的路径配置在文件中,截图如下:

第九步:在Springboot的核心配置application.properties中配置数据源的基本四项,截图如下:

第十步:在写程序的时候,在MyBatis的Mapper接口中添加@Mapper注解或者在运行的主类上添加:@MapperScan("com.hnxy.springboot.mapper"),作用是告知程序,哪些包添加了注解。(相当于spring中的@Component注解(@Respository、@Service、@Controller))

如下:

至此,创建springboot项目该配置的东西就配置好了。

 

第十一步:自动根据数据库的表生成实体类。

1:新建并写入GeneratorMapper.xml文件。

利用maven的反向工具,将数据库中的表生成对应的类,也就是给我们建好entity类。这里要用到一个文件,称之为:GeneratorMapper.xml,将其放置在项目的直接目录下,跟pom.xml是一个级别。该文件作用:连接数据库,读取相应的字段生成对应的类。

完整代码:见补充1。

2:配置文件有了,在pom.xml中添加一个插件,来执行该文件,进行反向工程的执行。pom.xml中添加插件的代码如下:

3:生成实体类

点击Idea界面的右侧,找到Maven,点击打开,找到我们刚刚插入的插件的名称,点击generate即可生成实体类。如下:

此时控制台会显示build成功,如下:

此时,再来看一下,新生成的目录结构:

接下来就开始写代码了:

第十二步:创建Controller类、Service类用来处理具体的代码。

目录结构如下:

Controller类的代码:

Service类的代码:

mapper包相当于springMVC开发中的dao层包。

在Mapper接口中新增的方法:getAllUserEntity();

这里与springMVC不同的是,mapper接口只给出了接口,并没有给出相应的实现,实际上,该接口中的实现都放在mapper包下的UserEntityMapper.xml文件中了。所以,

当我们新增方法的时候,其实现也要在该配置文件中实现。截图如下:

第十三步:新建springboot的主类,注意该类应该在mapper包和model包的上一级,这样,才能扫描到其下一级目录中的注解类,我们称之为:约定大约配置。

第十四步:运行主类,成功启动springboot服务器之后,访问控制器中的/boot/getEntity路径:会出现如下页面

第十五步:上述的错误分析:报500错误,是服务器端错误,一般在控制器层。这里报的问题是找不到dao层(也就是mapper包)下的方法。此原因在于:编译后的实体类的xml文件即UserEntityMapper.xml没有被编译出来。没有被编译的原因是:idea开发环境的问题,在eclipse中没有这种情况,所以要记住,idea中编译的时候要注意这个文件有没有被编译。

解决方案:在pom.xml文件中手动设置编译后的路径位置。在pom.xml中的build标签中添加以下代码:

然后重新运行主类方法。此时在target中就会生成了UserEntityMapper.xml。目录如下:

此时即可在网页中获得上述方法返回的值。显示的结果如下:

至此,一个通过普通的maven项目创建的springboot项目就完成了。

 

补充1:

GeneratorMapper.xml中的完整代码如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE generatorConfiguration

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

<!-- 指定连接数据库的JDBC驱动包所在的位置,指定到我们自己本机的完整路径-->

<classPathEntry location="D:\maven\mavenRespository\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar"></classPathEntry>

<!-- 配置table表信息内容题,targetRuntime指定采用MyBatis3的版本-->

<context id="tables" targetRuntime="MyBatis3">

<!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成-->

<commentGenerator>

<property name="suppressAllComments" value="true"></property>

</commentGenerator>

<!-- 配置数据库的连接信息-->

<jdbcConnection driverClass="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://localhost:3306/test2"

userId="root"

password="root">

</jdbcConnection>

<!--生成model类,targetPackage指定model类的包名,targetProject指定生成的model放在eclipse的那个工程下面-->

<javaModelGenerator targetPackage="com.hnxy.springboot.model" targetProject="src/main/java">

<property name="enableSubPackages" value="false"></property>

<property name="trimStrings" value="false"></property>

</javaModelGenerator>

<!--生成MyBatis的Mapper.xml文件,targetPackage指定mapper.xml文件的包名-->

<!--targetProject指定生成的mapper.xml放在idea的那个位置下-->

<sqlMapGenerator targetPackage="com.hnxy.springboot.mapper" targetProject="src/main/java">

<property name="enableSubPackages" value="false"></property>

</sqlMapGenerator>

<!-- 生成MyBatis的Mapper接口类文件,targetPackage指定Mapper接口类的包名,targetProject指定生成的-->

<!-- Mapper接口放在idea的那个目录下-->

<javaClientGenerator type="XMLMAPPER" targetPackage="com.hnxy.springboot.mapper" targetProject="src/main/java">

<property name="enableSubPackages" value="false"></property>

</javaClientGenerator>

<!-- 数据库的表名以及对应的java模型名称-->

<table tableName="user_info"

domainObjectName="UserEntity"

enableCountByExample="false"

enableUpdateByExample="false"

enableDeleteByExample="false"

enableSelectByExample="false"

selectByExampleQueryId="false"></table>

</context>

</generatorConfiguration>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Mybatis连接数据库骤如下: 1. 添加MybatisMybatis-Spring的依赖 ```xml <!-- Mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 2. 配置数据源 在`application.properties`配置数据源的属性,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 创建Mapper接口和SQL语句 Mapper接口是指定SQL语句的接口。可以使用注解或XML来指定SQL语句。 例如,创建一个UserMapper接口和XML文件: UserMapper.java ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(long id); } ``` UserMapper.xml ```xml <mapper namespace="com.example.mapper.UserMapper"> <select id="findById" resultType="com.example.model.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper> ``` 4. 注册Mapper接口 在启动类添加`@MapperScan`注解,指定Mapper接口所在的包: ```java @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 5. 使用Mapper接口进行数据操作 在需要使用Mapper接口的地方注入即可,例如: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public User findById(long id) { return userMapper.findById(id); } } ``` 以上就是在Spring Boot使用Mybatis连接数据库骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值