1、创建新项目.
2、编写 application.properties配置文件 – 数据库连接.
注意:serverTimezone 必须写,SpringBoot默认mysql8 ,mysql8需要配置时区
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3、获取数据源 和 连接.
数据源使用 DataSource 自动注入即可
连接 调用 dateSource.getConnection()
SpringBoot
中使用的 默认数据库连接池 是Hikari
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@SpringBootTest
class DataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
// 查看默认的数据源 class com.zaxxer.hikari.HikariDataSource
System.out.println(dataSource.getClass());
// 获取数据库的连接
Connection connection = dataSource.getConnection();
// xxx Template : SpringBoot 写好的Bean 可以直接用
// jdbcTemplate
// redisTemplate
// ...
// 关闭连接
connection.close();
}
}
4、xxxTemplate
的使用.
CRUD : 原生
@RestController
public class JDBCController {
@Autowired
JdbcTemplate jdbcTemplate;
// 查询数据库的所以信息
@RequestMapping("/userList")
public List<Map<String, Object>> userList(){
String sql = "select * from mybatis.user";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
@RequestMapping("/addUser")
public String addUser(){
String sql = "insert into mybatis.user(name,pwd) values('heihei','buheihei')";
Integer update = jdbcTemplate.update(sql);
return update.toString();
}
@RequestMapping("/updateUser")
public String updateUser(){
String sql = "update mybatis.user set name = ?,pwd = ? where id = ?";
// 参数
Object[] params = {"kaikai","liuminkai",2};
Integer update = jdbcTemplate.update(sql, params);
return update.toString();
}
@RequestMapping("/deleteUser")
public String deleteUser(){
String sql = "delete from mybatis.user where id = ?";
Integer update = jdbcTemplate.update(sql, 1);
return update.toString();
}
}
5、整合DruidDataSource
数据源.
引入依赖.
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.24</version>
</dependency>
配置文件中 指定数据源.
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 指定数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
druid的配置(需要导入log4j).
# druid 数据源专有配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
# 配置监控统计拦截的filters、stat:监控统计、log4j:日志记录、wall、防御sql注入
# 使用日志 需要导入 log4j
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.use-global-data-source-stat=true
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
DruidConfig.
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
// 后台监控 这个相当于 Web.xml
// 因为 SpringBoot 内置了 servlet容器,所以没有web.xml
// 替代方法 ServletRegistrationBean
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
// 后台需要有人登陆,账号密码配置
HashMap<String,String> initParameters = new HashMap<>();
// 增加配置
initParameters.put("loginUsername","admin");// 这两个是固定的
initParameters.put("loginPassword","123456");
// 允许谁可以访问 后面是ip地址
initParameters.put("allow","");
// 禁止谁访问 initParameters.put("名字","ip") deny
bean.setInitParameters(initParameters); //设置初始化参数
return bean;
}
// filter
@Bean
public FilterRegistrationBean webStatFilter(){
// 创建过滤器
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
// 可以过滤的请求
bean.addUrlPatterns("/*");
// 忽略
bean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return bean;
}
}
编写完以上代码后 启动项目 可以 直接访问 localhost:8080/druid/login.html 使用设置好的账号密码进行登录,查看后台信息
6、整合MyBatis框架.
引入依赖.
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
连接数据库.
# 数据库连接 application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
编写实体类 和 Mapper接口.
实体类
// 使用了lombok 需要引入依赖 和 安装插件
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private String pwd;
}
Mapper接口
@Mapper
表示这是一个mybatis 的 mapper类 : Dao
@Repsitory
被spring容器接管
@Mapper //表示这是一个mybatis 的 mapper类 : Dao
@Repository // spring容器接管
public interface UserMapper {
List<User> queryUserList();
User queryUserById(Integer id);
Integer addUser(User user);
Integer updateUser(User user);
Integer deleteUser(Integer id);
}
创建Mapper.xml(需要在resource目录下).
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.liuyou.mapper.UserMapper">
</mapper>
配置文件中,设置MyBatis.
# MyBatis
# 别名
mybatis.type-aliases-package=com.liuyou.pojo
# 本地配置文件
#mybatis.config-location=
# 绑定Mapper.xml 注意:classpath: 后别跟 /
mybatis.mapper-locations=classpath:mapper/*.xml
编写SQL,在对应的Mapper.xml中.
<insert id="addUser" parameterType="user">
insert into mybatis.user(name, pwd)
values(#{name},#{pwd})
</insert>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user
whehe
id = #{id}
</delete>
<update id="updateUser" parameterType="user">
update mybatis.user
<set>
<if test="name != null">
name = #{name},
</if>
<if test="pwd != null">
pwd = #{pwd},
</if>
</set>
where
id = #{id}
</update>
<select id="queryUserList" resultType="user">
select * from mybatis.user
</select>
<select id="queryUserById" parameterType="int" resultType="user">
select * from mybatis.user
where
id = #{id}
</select>
编写控制层(这里直接跳过业务层,直接Controller调Dao).
真实情况下,必须写业务层
结果展示.
查询所有用户
查询单个用户
新增一个用户
修改一个用户
删除一个用户