一、创建项目
使用idea创建springboot项目,可以直接添加mybatis和mysql数据库的相关依赖,
只需要再创建项目的时候多勾几个勾就可以了
(如果使用的不是idea开发工具,可以按照你熟悉的方式创建maven项目,添加下边的pom.xml文件中的内容即可)
1.1 选择创建spring项目
1.2 勾选springboot的web、mybatis、mysql支持
没有截图的步骤按照正常项目的创建方式即可
下边是项目创建成功之后生成的pom.xml文件,可以在<dependencies>依赖中发现包含mybatis和mysql的依赖。
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.peng</groupId>
<artifactId>springboot_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_mybatis</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
二、使用MyBatis完成CRUD操作
下边是项目最终的目录结构
1.1 建表
CREATE TABLE student
(
id INT(10) AUTO_INCREMENT PRIMARY KEY,
sname VARCHAR(50) NOT NULL,
sage INT(10) NULL
);
1.2 创建实体类
public class Student {
private int id;
private String sname;
private int sage;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getSage() {
return sage;
}
public void setSage(int sage) {
this.sage = sage;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", sname='" + sname + '\'' +
", sage=" + sage +
'}';
}
}
1.3 创建StudentDAO接口
public interface StudentDAO {
public List<Student> selectAll();
public int insert(Student stu);
public int delete(int id);
public int update(Student stu);
}
1.4创建StudentMapper.xml文件
在resources下创建一个文件夹叫做mappers,该文件夹用来存储mybatis的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">
<!--nnamespace和接口全类名保持一致-->
<mapper namespace="com.peng.springboot_mybatis.dao.StudentDAO">
<!--id和接口中方法名保持一致-->
<select id="selectAll" resultType="com.peng.springboot_mybatis.entity.Student">
select * from student
</select>
<delete id="delete">
delete from student where id = #{id}
</delete>
<update id="update">
update student set sname = #{sname} ,sage = #{sage} where id = #{id}
</update>
<insert id="insert">
insert into student(sname,sage) VALUES (#{sname},#{sage})
</insert>
</mapper>
1.5 修改application.properties文件
#mysql数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
#mybatis配置信息
#mapper文件的存放路径
mybatis.mapper-locations=classpath:mappers/*.xml
1.6在SpringBoot的启动类中,配置扫描器
@MapperScan("com.peng.springboot_mybatis.dao")的作用:可以对指定包下的mapper接口进行扫描
如果不配置,需要在每一个接口上边配置@Mapper注解
@MapperScan({"xxx","yyy"}) 支持对多个包下进行扫描,也支持*号通配符
@SpringBootApplication
@MapperScan("com.peng.springboot_mybatis.dao")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
1.7编写测试类,对CRUD方法进行测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisApplicationTests {
@Autowired
private StudentDAO dao; //使用idea此处会报错,但是不影响使用
@Test
public void test1() { //测试查询方法
List<Student> list = dao.selectAll();
for (Student student : list) {
System.out.println(student);
}
}
@Test
public void test2(){ //测试添加方法
Student stu = new Student();
stu.setSname("haha");
stu.setSage(20);
int i = dao.insert(stu);
System.out.println(i);
}
@Test
public void test3(){ //测试修改方法
Student stu = new Student();
stu.setId(6);
stu.setSname("haha");
stu.setSage(21);
int i = dao.update(stu);
System.out.println(i);
}
@Test
public void test4(){ //测试删除方法
int i = dao.delete(2);
System.out.println(i);
}
}
-------------------------到此SpringBoot整合mybatis就结束了-----------------------------------------------------
------------------------ 下边会对mybatis的使用进行优化-----------------------------------------------------------
配置打印SQL语句、集成pagehelper分页插件、使用阿里的druid数据库连接池
三、打印SQL语句
作用:通过打印sql语句,方便查看我们执行的SQL语句
在application.properties文件中增加一行配置 ,记得将com.peng.springboot_mybatis.dao修改为你的package路径
logging.level.com.peng.springboot_mybatis.dao=debug
四、集成 PageHelper
作用:PageHelper是github上的一个开源项目,可以简化mybatis的分页开发。如果你使用过mybatis就知道这是一个需要自己写sql语句的半自动化orm框架,如果需要完成分页功能,就会稍显麻烦,使用pageHelper可以简化分页开发。
1.修改pom.xml文件,增加pageHelper的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2.编写一个查询全部的方法 (然后就没了
), 那么下边我们就赶紧测试一下吧
3.测试分页的使用,在测试类中增加一个新的测试方法
PageHelper是引入的jar中的一个类,不需要自己写,直接使用即可。
startPage方法的两个参数分别代表pageNum(访问第几页)/pageSize(每页显示多少条数据)
物理分页(底层使用是拦截器)
list的实际类型是Page,可以通过输出 list.getClass()的方式查看,所以我们可以将list对象强转成Page,然后调用getTotal方法获取总条数
@Test
public void test5(){
PageHelper.startPage(1,5); //访问第1页,每页显示5条
List<Student> list = dao.selectAll();
for (Student s : list) {
System.out.println(s);
}
long count = ((Page) list).getTotal(); //获取总条数
System.out.println(count);
}
可以通过控制台打印sql语句发现,实际并没有执行查询全部的sql语句,而是输出了带有limit的分页查询语句,并且可以看到输出了查询总条数的sql语句,这样我们调用getTotal()方法获取总条数也就不奇怪了.
下边是pagehelper在github上的网址,希望深入学习的可以通过下边的网址进一步学习
五、整合阿里的druid
1. 修改pom.xml文件
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
2.修改application.properties ,增加spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
通过上边的配置,我们再次查询之前写好的查询方法,可以在控制台发现已经使用了druid连接池