- MySQL数据库默认使用的是美国的时区,而我们连接的时候用的是中国的北京时间,然后比美国晚上8个小时,所以当我们在连接数据库的时候要设置一下时区为东八区
ServerTimezone=UTC
- 驱动类
- MySQL5.x的版本使用的驱动类是com.mysql.jdbc.Driver
MySQL8.x的版本使用的驱动类是com.mysql.cj.jdbc.Driver
要在pom.xml文件中添加依赖。
数据库驱动依赖<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
数据库连接池依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
添加Mybatis的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
Application启动类添加扫描Dao注解
@MapperScan("com.huojuhao.dao")
application.properties添加配置
#mapper.xml文件地址
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#设置别名
mybatis.type-aliases-package=com.huojuhao.pojo
mybatis XML配置方式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--指定mybatis 使用指定日志-->
<settings>
<setting name="logImpl" value="slf4j"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/shiro"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<mapper class="com.huojuhao.mapper.UsersMapper"/>
</mappers>
</configuration>
xml Mapper文件方式
@Mapper
public interface StudentDao {
//@Select("select * from Student where stu_no=#{id}")
public Student getStudentById(int id);
}
```java <?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">
多对一结果映射 <br />嵌套结果
```xml
<association property="dept">
<result column="deptname" property="name"/>
</association>
支持懒加载的分步
嵌套查询
<association property="dept" column="dept_id" select="com.huojuhao.mapper.DeptMapper.findById"/>
一对多结果映射
使用<collection property=”emps” ofType=”Emp/>标签 ofType=>List的泛型
动态sql
标签
if判断标签 代替了 1=1 解决了 多个参数动态拼接 “and” 的问题 类似 switch语句 满足哪个 就执行哪个 都不满足则执行 标签 条件取其一 循环标签 传入集合或数组 <foreach collection=”集合名” item=”单个元素名” separator=”分隔符 一般用’,’ open=”条件前面拼接” close=”条件后面拼接 “> #{item} 用于update语句 前面自动添加set 后面自动去掉最后一个 ‘,’ 在mapper映射文件上下文声明一个变量 定义sql片段 id 唯一标识 配合 refid 需要引用的sql片段id 引用使用 可以抽出公共的mysql语句 重复使用 - 实现模糊查询 like ‘%XX%’
- 1.可以使用mysql的字符串拼接 — 空格拼接 — concat函数拼接
- 2 可以拼接好再传进来
- 3 使用bind再Mapper映射文件上下文声明一个变量
```xml select * form 表名 1=1 <if test=”id!=null and id!=’’> and id=#{id} 同
select * form 表名
条件构造器
模糊查询
排序查询
MyBatis注解
- @TableLogic 添加在实体类的字段上 删除时会执行逻辑删除 设置字段值为1 查询时会自动添加筛选条件 删除字段值 = 0