前言
一。pom.xml配置
<dependencies>
<!--spring boot 正常依赖 此处省略-->
<!-- mysql数据库 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<!-- lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<!--也可以使用mapper, 我使用的是mapper-spring-boot-starter-->
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!--通用mapper分页的依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.7</version>
</dependency>
</dependencies>
二。application.yml配置文件
spring:
datasource:
url: jdbc:mysql://ip:3306/db_name?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
username: username
password: password
driver-class-name: com.mysql.jdbc.Driver
#mybatis配置
mybatis:
mapper-locations: classpath:mapper/*.xml
identity: MYSQL
#通用mapper配置,也可以不需要该配置,该作用主要是自定义一个通用的接口,多有dao层都继承该接口
mapper:
mappers: com.example.demo.mapper.TKMapper
三。mapperscan配置
//注意: 一定要注意MapperScan 的导入包为tk.mybatis.spring.annotation.MapperScan 不要导入mybatis的否则会出现mapper配置出错,运行不了
//是因为mybatis的dao层需要依赖mapper的xml文件
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
//dao层的扫描路径
@MapperScan("com.example.demo.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
四。实例
package com.example.demo.been;
import lombok.Data;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "bebo_detail_data") //数据表名称
@Data
public class BeboDetailData {
@Id //当前id为主键
@GeneratedValue(generator = "JDBC")
private Long id;
private String deviceUuid;
private Long tradeId;
private Long schoolId;
private Long orgId;
private Date onlineTime;
private Date offlineTime;
}
五。mapper通用接口
注:写该接口的作用是通用mapper接口有可能依赖的比较多,例如该代码中就依赖了Mapper, MySqlMapper。这样写可以一次引入,其他的dao层直接依赖TKMapper就可以。需要传入指定的been类型。(注意yml文件对该接口的配置)
package com.example.demo.mapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface TKMapper<T> extends Mapper<T>, MySqlMapper<T>{
}
六。dao层接口
注:如果是比较简单,通用mapper能够满足的sql, 就直接采用通用mapper的方式操作数据库。如果sql是比较复杂的例如多表联合查询,可能需要在接口中定义方法,在 .xml中实现sql语句(和mybits一样)。
package com.example.demo.dao;
import com.example.demo.been.BeboDetailData;
import com.example.demo.mapper.TKMapper;
public interface BeboDataDao extends TKMapper<BeboDetailData> {
//可以实现方法,在xml中实现sql
}
七。测试用例,采用springboot的测试类
package com.example.demo;
import com.example.demo.been.BeboDetailData;
import com.example.demo.dao.BeboDataDao;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
@Slf4j
class DemoApplicationTests {
@Autowired
BeboDataDao beboDataDao;
@Test
void contextLoads() {
List<BeboDetailData> datas = beboDataDao.selectAll();
System.out.println(datas);
}
}
结果展示
[BeboDetailData(id=22, deviceUuid=2019061000010028, tradeId=null, schoolId=9, orgId=1128552550732136448, onlineTime=Mon Dec 23 09:56:17 CST 2019, offlineTime=Mon Dec 23 09:57:06 CST 2019), BeboDetailData(id=23, deviceUuid=2019061000010028, tradeId=null, schoolId=9, orgId=1128552550732136448, onlineTime=Mon Dec 23 10:02:17 CST 2019, offlineTime=Mon Dec 23 10:02:45 CST 2019)]
网友评论