Spring Boot集成Mybatis
- (0)准备数据库创建account表
CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot_db` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `springboot_db`;
/*Table structure for table `account` */
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`id` varchar(20) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`value` double DEFAULT NULL,
PRIMARY KEY (`id`)
)
package com.dev1.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Data
public class Account {
private String id;
private String name;
private Double value;
}
- (1) 添加启动器依赖;(自动添加 使用springboot init…勾选)
pom.xml中配置
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
- (2)配置Mybatis:实体类别名包,日志,映射文件等;
server:
servlet:
context-path: "/day01"
port: 8002
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot_db
username: root
password: root
mybatis:
type-aliases-package: com.dev1.entity #别名
mapper-locations: classpath:com.dev1.mapper/*.xml #xml文件
#使用注解在启动类上面配置 @MapperScan("com.wzx.demo04mybatis.dao")//存放接口
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #mybatis日志
必须要在启动类上进行配置,否则没法运行Mapper
@SpringBootApplication
@MapperScan("com.dev1.mapper")
public class MySpringBootApplication8002 {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication8002.class);
}
}
# Spring Boot集成Mybatis测试
- (4)编写Mapper
package com.dev1.mapper;
import com.dev1.entity.Account;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface AccountMapper {
public void add(Account account);
public void update(Account account);
public void delete(@Param("id") String id);
public Account findById(@Param("id")String id);
public List<Account> findAll( );
}
- (5)配置Mapper映射文件
<?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">
<!-- 1接口的方法使用哪个sql 使用包名+类名 先找到mapper -->
<mapper namespace="com.dev1.mapper.AccountMapper">
<!-- 2使用方法名作id -->
<insert id="add" parameterType="Account">
insert account (id,name,value)values(#{id},#{name},#{value})
</insert>
<update id="update" parameterType="Account">
update account set name = #{name},value=#{value} where id=#{id};
</update>
<delete id="delete" parameterType="String">
delete from account where id=#{id};
</delete>
<select id="findById" parameterType="String" resultType="Account">
select * from account where id = #{id}
</select>
<!-- mybatis中方法返回的是集合,resultType配置元素类型就可以 -->
<select id="findAll" resultType="Account">
select * from account
</select>
</mapper>
- (6)测试
package com.dev1.mapper;
import com.dev1.entity.Account;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class AccountMapperTest {
@Autowired
AccountMapper mapper;
@Test
void add() {
for (int i = 0; i < 10; i++) {
Account account = new Account("100"+i,"name"+i,100D);
mapper.add(account);
}
}
@Test
void update() {
Account account = new Account("1001","jack",10000D);
mapper.update(account);
}
@Test
void delete() {
mapper.delete("1001");
}
@Test
void findById() {
System.out.println(mapper.findById("1000"));
}
@Test
void findAll() {
System.out.println(mapper.findAll());
}
}
Mysql驱动8的问题
java.sql.SQLException: The server time zone value
- (1)com.mysql.cj.jdbc.Driver
- (2)jdbcURL
jdbc:mysql://127.0.0.1:3306/test01?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8