SpringBoot整合Mybatis心得记录
以前看着别人的博客一步一步的跟着别人整合,然后代码多的或者是一些配置信息则直接复制改成自己的包名以及类名进行学习,那时候为了快速学习,所以没那么多,也一下子没时间查那么多配置信息,知道怎么用就可以了。现在自己写的话,如果不看记录,有些配置就会不懂,所以选择写下一下自己整合的思路,以及要注意问题方便日后回顾学习。
使用idea创建项目,一般开发项目我们都会使用数据库,用到数据库就要用到数据源(datasource)、数据库驱动、以及持久层框架。
写项目的时候一般用到的数据源有
1、JDBC
2、c3p0
上面两种我很少用
3、hikari
这个已经是idea默认的数据源了,如果是用idea写项目用这个数据源,不用配置其他的信息,只需要在application.yml或者application.properties完成基本的配置就能连接数据库,都不用“ driver-class-name ”这个属性了。个人比较喜欢用这个,因为配置一下就可以用了,前提是你在pom.xml中要有Mysql或者Oracle的数据库驱动,以及持久层框架如JPA、Mybatis、JDBC。
在application.properties配置如下:
#url=jdbc:mysql://localhost:3306/sheefee?serverTimezone=Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.url=jdbc:mysql://localhost:3306/sheefee?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1111
# 下面是mybatis配置文件信息
mybatis.mapper-locations=classpath:com/jiyue/testsso/mapper/*.xml
#mybatis.mapper-locations=classpath:mapper/*.xml #这种方式需要自己在resources目录下创建mapper目录然后存放xml
mybatis.type-aliases-package=com.jiuyue.testsso.entity
# 驼峰命名规范 如:数据库字段是 order_id 那么 实体字段就要写成 orderId
mybatis.configuration.map-underscore-to-camel-case=true
4、druid
这是阿里的,现在很多项目都在用这个数据库。
我在项目中整合了mybatis,整合项目的依赖jar包如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</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>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
需要注意的是,我们在业务层和持久层的相关接口或者实现类中需要配置相关注解,如在业务层的实现类中@Service,在持久层的.Mapper接口注解@Mapper,之后我们在可以在控制器Controller中使用@Autowired进行依赖注入,在业务层实现类中使用@Autowired将.Mapper依赖注入。
在application.properties中配置
mybatis.mapper-locations=classpath:com/jiyue/testsso/mapper/*.xml
#mybatis.mapper-locations=classpath:mapper/*.xml #这种方式需要自己在resources目录下创建mapper目录然后存放xml
mybatis.type-aliases-package=com.jiuyue.testsso.entity
# 驼峰命名规范 如:数据库字段是 order_id 那么 实体字段就要写成 orderId
mybatis.configuration.map-underscore-to-camel-case=true
如果我们将*.Mapper.xml文件放在src/main/java下的包中,则可以使用下面方式配置文件
mybatis.mapper-locations=classpath:com/jiyue/testsso/mapper/*.xml
如果我们将*.Mapper.xml文件放在src/main/resouece下的包中,则可以使用下面方式配置文件
mybatis.mapper-locations=classpath:mapper/*.xml
除此之外,我们还要配置
mybatis.type-aliases-package=com.jiuyue.testsso.entity
上面我们配置的信息,还需要在pom.xml中配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
UserMapper.xml,配置的时候,注意type="com.jiuyue.testsso.entity.User"
<?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.jiuyue.testsso.mapper.UserMapper">
<resultMap id="userMap" type="com.jiuyue.testsso.entity.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
</resultMap>
<insert id="insertUser" parameterType="com.jiuyue.testsso.entity.User">
INSERT INTO `user`(`username`,`password`)
VALUES (#{username},#{password})
</insert>
<select id="selectUserByUsernameAndPassword" parameterType="com.jiuyue.testsso.entity.User" resultMap="userMap">
SELECT id, username, password
FROM `user`
WHERE username = #{username} AND password = #{password}
</select>
</mapper>