MyBatis入门
2022年11月24日大约 5 分钟
MyBatis入门
所有技术学习都是从HelloWorld入门开始,基本步骤如下:
- 准备工作(创建项目、实体类、表)
- 导入Jar包
- 创建mybatis-config.xml核心配置文件
- 创建Mapper.xml映射文件
- 测试
准备工作
创建maven项目,通过maven管理项目,数据库使用mysql
下载jar包
要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。
如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:
<!-- 添加mybatis核心配置文件 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- 添加数据库驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
创建mybatis-config.xml核心配置文件
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。后面会再探讨 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="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/yuntu?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件:编写SQL语句的地方 -->
<mappers>
<mapper resource="mapper/UserInfoMapper.xml"/>
</configuration>
注:重点关注<dataSource type="POOLED">的type属性、其有三种取值:
- POOLED:使用Mybatis自带的数据库连接池来管理数据库连接
- UNPOOLED:不使用任何数据库连接池来管理数据库连接
- JNDI:jndi形式使用数据库连接、主要用于项目正常使用的时候
当然,还有很多可以在 XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。 注意 XML 头部的声明,它用来验证 XML 文档的正确性
创建UserInfoMapper.xml
创建对应的mapper文件,用来存放对应的sql语句
<?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.as.mapper.UserMapper">
<select id="selectUser" resultType="com.as.bean.UserInfo">
SELECT id,login_name loginName,nick_name nickName,passwd,NAME,
email,head_img headImg,user_level userLevel,birthday birthdayDate,
gender,create_time createTime,operate_time operateTime FROM user_info
WHERE id = #{id}
</select>
</mapper>
namespace :命名空间(可以理解为java中package包,用来区分对象),用于隔离sql语句
在UserInfoMapper.xml中添加:半自动化,自己主要负责的是具体的sql的编写,添加到mapper中
测试
1)从 XML 中构建 SqlSessionFactory
2)从SqlSessionFactory获取SqlSession
3)调用指定数据
public static void main(String[] args) throws IOException {
//1)从 XML 中构建 SqlSessionFactory
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2)从SqlSessionFactory获取SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//3)调用指定数据
UserInfo userInfo = sqlSession.selectOne("com.as.mapper.UserMapper.selectUser", 1);
System.out.println(userInfo);
}
Loading...