MyBatis是一个持久层框架,用于简化JDBC开发
创建一个数据表,准备环境
create database mybatis;
use mybatis;
create table tb_user(
id int PRIMARY KEY auto_increment,
username varchar(20),
password VARCHAR(20),
gender char(1),
addr varchar(30)
);
INSERT into tb_user VALUES(null,'张三','123','男','北京');
INSERT into tb_user VALUES(null,'李四','234','女','天津');
INSERT into tb_user VALUES(null,'王五','11','男','西安');
创建Maven模块,导入mybatis坐标
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
mybatis核心配置文件
mybatis-config.xml
配置数据库的环境和mybatis的全局配置信息
<?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>
<!--引入properties文件-->
<!--之后就可以使用${xxx}引用properties文件中的键值对属性了-->
<properties resource="jdbc.properties"/>
<!--类型别名使用的时候不区分大小写-->
<typeAliases>
<!--resultType可以不用写全限定名了,使用别名即可-->
<!--alias不设置,别名则默认为类名(且不区分大小写)-->
<typeAlias type="cn.domain.User"></typeAlias>
<!--以包为单位,将cn.domain包下的类都设置默认的类型别名-->
<package name="cn.domain"/>
</typeAliases>
<!--数据库环境-->
<environments default="development">
<environment id="development">
<!--使用JDBC中原生的事务管理方式,事务的提交回滚需要手动处理-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!--sql映射文件路径-->
<mappers>
<mapper resource="cn/mapper/UserMapper.xml"/>
<!--以包为单位引入映射文件-->
<!--要求-->
<!--mapper接口所在的包和映射文件所在的包一致-->
<!--mapper接口要和映射文件的名字一致-->
<package name="cn/mapper"/>
</mappers>
</configuration>
sql映射文件
通常命名为 表名Mapper.xml
,统一管理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">
<!--namespace:名称空间-->
<mapper namespace="test">
<!--sql语句在这里面写-->
<!--id是sql语句的唯一标识-->
<!--resultType返回结果类型-->
<select id="selectAll" resultType="User">
select * from tb_user;
</select>
</mapper>
demo
public class User {
private Integer id;
private String username;
private String password;
// getter,setter 方法
// toString 方法
}
public class MyBatisDemo {
public static void main(String[] args) throws IOException {
// 加载mybatis核心配置文件, 获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取SqlSession对象, 用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
// 执行sql
// 传入"名称空间.sql语句唯一标识"
List<User> users = sqlSession.selectList("test.selectAll");
System.out.println(users);
// 释放资源
sqlSession.close();
}
}