mybatis因为其sql语句与代码分离利于维护,业务逻辑与数据逻辑分离,使用简单学习上手快是项目与数据库交互的良好构件之不二之选。
主要讲解:
1讲解xml方式的使用方式(映射关系) 还有注解方式的基本使用
2动态sql的使用
3分页插件
4通用Mapper
mybatis学习项目已完结项目地址
GitHub - YHappyEatingY/mybatis_studyContribute to YHappyEatingY/mybatis_study development by creating an account on GitHub.https://github.com/YHappyEatingY/mybatis_study.gitgit clone GitHub - YHappyEatingY/mybatis_study 打开直接使用
创建工程和初步使用
创建一个springboot工程(笔者的版本为2.7),在maven中央网址Maven Repository: Search/Browse/Explore (mvnrepository.com)
idea用的mybatis插件:
查找mysql驱动(笔者用的是mysql8版本)
mybatis的依赖:
配置日志依赖:
配置日志文件:
# 全局配置
log4j.rootLogger=ERROR, stdout
#mybatis日志配置
log4j.logger.com.example.ademo.Mapper=TRACE
#控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
这里的log4j.logger.com.example.ademo.Mapper中的com.example.ademo为包
准备数据库数据:
create database mybatis;
create table country(
`id` int not null auto_increment,
`countryname` varchar(255) null,
`countrycode` varchar(255) null,
primary key(id)
)
insert country(`countryname`,`countrycode`) values('中国','CN'),('美国','US'),('俄罗斯','RU'),('英国','GB'),('法国','FR');
select * from country;
在src/main/resources下配置mybatis-config核心文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- configuration -->
<!-- environments 配置连接数据库的环境
default: 默认使用的环境
-->
<!-- 引入properties文件,此后可以在当前文件中以的方式访问value值-->
<properties resource="jdbc.properties"/>
<!-- 使用log4j输出日志-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 为类型设置一个别名 可以在xml文件中直接使用-->
<typeAliases>
<!-- type起别名的类型, alias:设置某个类型的别名 -->
<!-- 不设置alias 则默认为类名,且不区分大小写 -->
</typeAliases>
<environments default="development">
<!-- id 唯一的标识,不能重复.-->
<environment id="development">
<!--
transactionManager:设置事务管理方式
属性:
type="JDBC|MANAGED"
JDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事
务的提交或回滚需要手动处理 ;
MANAGED:被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!-- type : 设置数据源的类型
type ="POOLED|UNPOOLED|JNDI"
POOLED:使用数据库连接池
UNPOOLED:不使用数据库连接池
JNDI:使用上下文中的数据源
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 引入mybatis 的映射文件 -->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/>-->
<!-- 以包的方式引入映射文件
1 mapper 接口和映射的文件所在的包必须一致
2 mapper 接口的名字和映射文件的名字必须一致
-->
</mappers>
</configuration>
jdbc.properties文件:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?serverTimezone=UTC&characterEncoding=utf-8
jdbc.username=root
jdbc.password=abc1234
创建model包创建country实体类
创建Mapper包创建CountryMapper接口:
(这里和下下图的红线报错是插件没有识别的原因 配置了typeAlias)
在src/main/resources下创建mapper包创建CountryMapper.xml映射文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.ademo.Mapper.CountryMapper">
<select id="selectAll" resultType="country">
select id , countryname ,countrycode from country;
</select>
</mapper>
配置SqlSessionFactory的Bean:
测试:
测试结果:
小结:
对mybatis有了一个简单的认识,涉及了一些mybatis的简单配置以及使用方法,并让一个mybatis项目跑了起来。