Mybatis学习01--环境搭建和第一个程序
简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
官网:https://mybatis.org/mybatis-3/zh/getting-started.html
环境搭建
MySQL
MySQL安装目录下 my.ini 文件
[mysqld]
#设置3306端口号
port=3306
#设置MySQL的安装目录
basedir=D:\MySQL\mysql-8.0.22-winx64\mysql-8.0.22-winx64
#设置MySQL数据库的数据存放目录
datadir=D:\MySQL\mysql-8.0.22-winx64\mysql-8.0.22-winx64\data
#运行最大连接数
max_connections=200
#运行连接失败的次数。这也是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#服务端使用的字符集默认为utf-8
character-set-server=utf8
#设置时区
default-time_zone='+08:00'
[mysql]
#客户端使用的字符集默认为utf8
default-character-set=utf8
[client]
#客户端默认端口号为3306
port=3306
添加环境变量

安装
mysqld --install
初始化
mysqld --initialize-insecure --user=mysql
登录
mysql -uroot -p
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
刷新权限
flush privileges;
重启
net stop mysql
net start mysql
SQLyog 数据库可视化工具
https://sqlyog.en.softonic.com/download
Mybatis
maven添加依赖 pom.xml文件中:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
mybatis-config.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
第一个程序
创建数据库


从SqlSessionFactory中获取SqlSession
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
利用SqlSession完成查询操作
SqlSession session= MybatisUtil.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
List<User> users=mapper.selectUser();
SQL查询是如何实现的呢?我们来看mybatis-config.xml文件,XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。下面是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.tang.UserMapper">
<select id="selectUser" resultType="com.tang.User">
select * from user
</select>
</mapper>
命名空间namespace将映射器的xml文件和接口绑定,在xml文件中可以定义sql语句,注意select id要与绑定的接口的方法一一对应
public interface UserMapper {
public List<User> selectUser();
}
出现的问题
程序报错:Could not find resource UserMapper.xml 找不到映射器资源文件
原因:
-
路径不正确
-
maven静态资源过滤问题,在pom.xml添加:
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
参考:
https://blog.csdn.net/qq_33369905/article/details/106647283
浙公网安备 33010602011771号