Резюме
В этой статье в основном рассказывается, как интегрировать JDBC и MyBatis в проект SpringBoot. Я буду использовать простые примеры использования и тестовые примеры в интеграции. В конце концов, цель этой статьи — интегрировать, а не научить вас, как это использовать. Я надеюсь, что вы все терпеть меня.
Общая конфигурация
Классы сущностей и конфигурации, которые необходимо добавить для интеграции JDBC и интеграции MyBatis, описаны ниже.
Таблица базы данных
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
класс сущности
Добавьте простой класс сущности пользователя для использования и тестирования jdbc и mybatis ниже. Добавьте метод toString, чтобы упростить просмотр результатов при тестировании.
public class User {
private Integer id;
private String username;
private String address;
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
'}';
}
}
конфигурация maven
Версия MySQL устанавливается в соответствии с вашей собственной версией базы данных Источник данных, предоставленный druid для Alibaba Cloud (который можно понимать как пул соединений)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.18</version>
</dependency>
Конфигурация базы данных
Конфигурация свойств базы данных определенно необходима.
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydatabase
Интеграция JDBC
maven-зависимости
Добавьте зависимость jdbc, предоставленную Springboot.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
использовать
@Service
public class UserService {
@Autowired
JdbcTemplate jdbcTemplate;
public Integer addUser(User user) {
return jdbcTemplate.update("insert into user (username,address) values (?,?);",
user.getUsername(), user.getAddress());
}
/**
* 查询方式一
* 当类属性和数据库字段不对应时才这样使用
* @return
*/
public List<User> getAllUserFirst() {
return jdbcTemplate.query("select * from user;", new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
int id = resultSet.getInt("id");
String address = resultSet.getString("address");
String username = resultSet.getString("username");
user.setId(id);
user.setUsername(username);
user.setAddress(address);
return user;
}
});
}
/**
* 查询方式二
* 当类属性和数据库字段对应时就这样使用啦,比上面的简洁很多
*/
public List<User> getAllUserSecond() {
return jdbcTemplate.query("select * from user;", new BeanPropertyRowMapper<>(User.class));
}
}
Здесь нужно помнить, что jdbc используется независимо от того, добавляется ли он, изменяется или удаляется.update
метод. И запрос должен использоватьquery
.
Если поля базы данных и атрибуты класса сущностей несовместимы, вам необходимо использовать приведенный выше код.查询方式一
Если поля базы данных и свойства класса сущностей одинаковы, вы можете использовать приведенный выше код.查询方式二
, просто и быстро.
тестовое задание
После окончания, конечно же, не обойтись без теста.Тестовый класс выглядит следующим образом:
@SpringBootTest
class JdbcApplicationTests {
@Autowired
UserService userService;
@Test
public void addUser() {
User user = new User();
user.setUsername("johnson2");
user.setAddress("colablog.cn");
userService.addUser(user);
}
public void queryUsers() {
List<User> allUserFirst = userService.getAllUserFirst();
System.out.println(allUserFirst);
}
}
Интегрировать MyBatis
MyBatis, самый популярный фреймворк уровня персистентности, использует SSM каждый день, и мои уши затыкаются, когда я слышу это. Интеграция MyBatis может быть наиболее часто используемой, и интеграция выглядит следующим образом:
maven-зависимости
Вы можете проверить версиюрепозиторий maven
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
Сканировать картограф
Необходимо указать путь сопоставления для сканирования SpringBoot, мой путь сканирования пакетаcn.colablog.mybatis.mapper
Способ 1: самостоятельно добавить элемент конфигурации
@Configuration
@MapperScan(basePackages = "cn.colablog.mybatis.mapper")
public class MyBatisConfig {
}
Способ 2: настроить непосредственно в приложении
@SpringBootApplication
@MapperScan(basePackages = "cn.colablog.mybatis.mapper")
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
}
Картографирование
Интерфейс UserMapper
в пакете Mappercn.colablog.mybatis.mapper
Добавьте интерфейс UserMapper в каталог
@Mapper
public interface UserMapper {
List<User> getAllUser();
}
UserMapper.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.colablog.mybatis.mapper.UserMapper">
<select id="getAllUser" resultType="com.colablog.mybatis.bean.User">
select * from user
</select>
</mapper>
Существует три способа хранения:
Режим 1 (по умолчанию)SpringBoot находит Mapper.xml в каталоге ресурсов по умолчанию, например сопоставлениеUserMapper
Путь к интерфейсу находится в каталоге javacn.colablog.mybatis.mapper
.
ТакUserMapper.xml
Его нужно поместить в каталог ресурсовcn.colablog.mybatis.mapper
.
Примечание. Если вы используете инструменты разработки IDEA, добавление каталогов в ресурс не может быть добавлено следующим образом:
cn.colablog.mybatis.mapper
, поэтому вам нужно добавить их по одному, а места хранения следующие:
Способ 2Настройте путь хранения в файле свойств:
mybatis.mapper-locations=classpath:/mapper/*.xml
Места хранения следующие:
способ третийЧтобы настроить ресурс в pom.xml, вам нужно загрузить файл xml в каталог java:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
...
</build>
Таким образом, вы можете хранить его в том же каталоге, что и интерфейс UserMapper, и место хранения выглядит следующим образом:
На этом статья заканчивается! Далее я продолжу писать статьи о SpringBoot, если вам интересно, то можете прочитать мои первые две статьи оSpringBoot Web篇
Статья о.
Спасибо за прочтение Если в статье есть недостатки или предложения получше, оставьте сообщение ниже, Спасибо♪(・ω・)ノ.
Адрес личного блога:colablog.cn/
Если моя статья поможет вам, вы можете подписаться на мою публичную учетную запись WeChat и поделиться статьей с вами как можно скорее.