本文讲解如何在springboot中集成mybatis (xml方式)
spring Boot 支持两种方式集成mybatis,一种是使用注解,另一种是使用xml,两种方式各有优劣,注解方式简洁方便,不需要xml,xml方式可以直观的看到sql,方便sql优化
集成mybatis:
- 新建一个springboot项目
- pom.xml中引入mybatis和mysql的依赖
- 配置文件配置数据库链接属性
pom.xml引入mybatis,mysql依赖
pom.xml中的mybatis,mysql依赖可以在创建项目的时候勾选对应的依赖项
如果在构建项目是没勾选对应的依赖,可以在建完项目后,手动添加依赖,保证pom.xml有mybatis,mysql依赖
pom.xml对应的依赖
<dependencies>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- junit -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
application.yml 配置数据库属性,mybatis配置
application.yml 配置如下:
spring:
#mysql配置
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/wtx?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: root
mybatis:
#mybatis xml文件文件地址
mapper-locations: classpath:mapper/*.xml
#批量扫描别名包地址
type-aliases-package: com.my.example.domain
表结构
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(32) DEFAULT NULL,
`pass_word` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
域对象 user
/**
* @auther: chenmingyu
* @date: 2018/11/4 13:39
* @description:
*/
@Data
public class User {
private Long id;
private String userName;
private String password;
}
xml方式集成mybatis
- 配置文件中配置mybatis的sql的xml文件的路径
- 入口类上使用注解@MapperScan指定扫描dao层接口
SpringBootApplication 入口类
@SpringBootApplication
@MapperScan("com.my.example.dao")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
dao层接口
/**
* @auther: chenmingyu
* @date: 2018/11/4 13:42
* @description:
*/
public interface UserMapper {
User findUserByName(@Param("id") Long id) throws Exception;
}
xml文件
<?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.my.example.dao.UserMapper" >
<resultMap id="BaseResultMap" type="com.my.example.domain.User" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="user_name" property="userName" jdbcType="VARCHAR" />
<result column="pass_word" property="passWord" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, user_name, pass_word
</sql>
<select id="findUserByName" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select
<include refid="Base_Column_List" />
from user
where id = #{id,jdbcType=BIGINT}
</select>
</mapper>
使用junit测试mapper
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisApplicationTests {
@Resource
private UserMapper userMapper;
@Test
public void testFindByName() throws Exception {
User user = userMapper.findUserByName(5L);
System.out.println("第一条记录:"+user.toString());
}
}