Mybatis框架的整合
1、首先配置好druid
见上节druid的配置和使用;
2、配置和整合Mybatis
pow.xml文件:
<?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 https://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.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-mybatis</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-jdbc</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>2.1.2</version>
</dependency>
<!--druid数据源-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我们可以来看看mybatis在springboot中的应用结构:
mybatis不是springboot官方出的,而是mybatis框架为了适应于springboot所开发的配置文件:mybatis-springboot-starter;
3、Mybatis的配置和使用
我们使用注解配置方式,在SpringBoot中使用注解配置方式较为简便。
第一步:我们来创一个bean.User的类:
package com.example.demo.bean;
public class User {
private String username;
private String passwd;
private String phone;
private String address;
private String youbian;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getYoubian() {
return youbian;
}
public void setYoubian(String youbian) {
this.youbian = youbian;
}
}
第二步:我们来创一个mapper.UserMapper接口
package com.example.demo.mapper;
import com.example.demo.bean.User;
import org.apache.ibatis.annotations.*;
@Mapper
public interface UserMapper {
@Select("select *from user where username=#{username}")
public User getUserUsername(String username);
@Delete("delete from user where username=#{username}")
public int deleteUserById(String username);
@Insert("insert into user(username,passwd,phone,address,youbian) values(#{username},#{passwd},#{phone},#{address},#{youbian})")
public int insertUser(User user);
@Update("update user set passwd=#{passwd},phone=#{phone},address=#{address},youbian=#{youbian} where username=#{username}")
public int updateUser(User user);
}
第三步:我们来创一个UserController
package com.example.demo.Controller;
import com.example.demo.bean.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
@GetMapping("/user/{username}")
public User getUser(@PathVariable("username") String username){
return userMapper.getUserUsername(username);
}
@GetMapping("/user")
public User insertUser(User user){
userMapper.insertUser(user);
return user;
}
}
第四步:我们来测试Mybatis整合效果
运行:
传入一个username的主键信息,查出该条User的信息,并以json的方式返回;
添加、修改、删除和这同理可得。
Mybatis的自定义配置:
我们创建一个配置类:config.MybatisConfig
@Configuration
public class MyBatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer(){
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);
//这里可以进行自定义配置
}
};
}
}
在这里,我们可以修改mybatis的一些自动配置的设置,改为我们自定义的配置信息。
Mybatis的mapper的批量扫描:
//使用@MapperScan(value="com.包名")
//就可以批量添加mapper注解了