# Mybatis 入门
https://mybatis.net.cn/index.html
创建Maven项目,pom.xml中导入mybatis依赖
<!-- mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <!-- 连接数据库 --> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>3.0.7</version> </dependency>
编写mybatis核心配置文件 -- 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="org.mariadb.jdbc.Driver"/> <property name="url" value="jdbc:mariadb://127.0.0.1:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="ROOT"/> </dataSource> </environment> </environments> <mappers> <!-- 加载sql映射文件 --> <mapper resource="UserMapper.xml"/> </mappers> </configuration>
加载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="test"> <!-- namespace 名称空间--> <select id="selectAll" resultType="top.brightzm.pojo.User"> select * from tb_user; </select> </mapper>
进行编码
定义pojo类
加载核心配置文件,获取sqlFactory对象
// 1.加载mybatis核心配置文件,获取sqlSessionFactory String resource = "mybatis.config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
获取sqlSession对象,执行sql语句
// 2.获取sqlSession对象,执行sql语句 SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("test.selectAll"); System.out.println(users);
释放资源
# Mapper 代理开发
- 定义与sql映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放着在同一目录下
MAVEN项目下,配置文件必须存放在 src/resource目录下
可以在resource目录下创建路径与接口同名路径,编译后就会处在同一目录下,如图
路径更改后,mybatis-config.xml中也要同步更改映射文件的路径
<mappers>
<!-- 加载sql映射文件 -->
<mapper resource="top/brightzm/mapper/UserMapper.xml"/>
</mappers>
- 如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化sql映射文件加载
<mappers>
<!-- 加载sql映射文件 -->
<!-- <mapper resource="top/brightzm/mapper/UserMapper.xml"/>-->
<!-- Mapper代理开发方式 -->
<package name="top.brightzm.mapper"/>
</mappers>
设置sql映射文件的namespace属性为Mapper接口全限定名 -- 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="top.brightzm.mapper.UserMapper"> <!-- namespace 名称空间--> <select id="selectAll" resultType="top.brightzm.pojo.User"> select * from tb_user; </select> </mapper>
在Mapper接口中定义方法,方法名就是sql映射文件中sql语句的id,并保持参数类型和返回值类型一致
List<User> selectAll();
进行编码
// 通过sqlSession的getMapper方法获取Mapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 调用方法 List<User> users = userMapper.selectAll();
# Mybaits核心配置文件
文件结构
配置各个标签,需要严格遵守前后顺序
类型别名
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写
mybaits-config.xml <typeAliases> <!-- 类型别名 --> <package name="top.brightzm.pojo"/> </typeAliases>
UserMapper.xml <select id="selectAll" resultType="user">
← 高级篇 只用Servlet搞定登录与注册 →