Mybatis学习(一)
Mybatis学习(一)
JDBC操作数据库回顾
Class.forName("dirver");
Connection connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
String sql = "select * from user";
PrepareStatment pstmt = connection.prepareStatement(sql);
int result = pstmt.executeUpdate();// 增加、删除、改
ResultSet resultSet = pstmt.executeQuery();// 查询
// 获取所有列
ResultSetMetaData metaData = resultSet.getMetaData();
resultSet.close();
connection.close();
Mybatis介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
Mybatis起步
Mybatis环境使用Maven创建,开发工具使用idea。搭建项目环境主要依赖于mybatis包和mysql驱动包。以及log4j和Junit测试环境。
一、首先新建Maven项目
Maven官方网站:https://maven.apache.org/
二、搭建项目环境
Maven坐标
Maven坐标网站:https://mvnrepository.com/
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cc.mybatis</groupId>
<artifactId>mybatis-annotion</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
三、创建数据库表
四、创建实体类
实体类应与数据库相对应
package com.mxchao.mybatis.domain;
public class MybatisTest {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public MybatisTest() {
}
@Override
public String toString() {
return "MybatisTest{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
五、Mybatis配置文件
数据库连接通过properties单独放一个配置文件,方便开发环境更改。
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.13.60:3306/sms
jdbc.username=root
jdbc.password=root
mybatis-config.xml
配置文件可以参考:http://www.mybatis.org/mybatis-3/zh/getting-started.html
<?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 resource="db.properties" />
<!-- mybatis环境配置 -->
<environments default="dev">
<environment id="dev">
<!-- 事务管理 -->
<transactionManager type="JDBC" />
<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>
<!-- 指定映射配置文件的位置,每一个dao一个配置文件。 -->
<mappers>
<mapper resource="com/mxchao/mybatis/dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
6、创建数据库查询接口
public interface UserDao {
List<User> findAll();
}
7、创建接口对应的statement,映射文件
<?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.mxchao.mybatis.dao.UserDao"> <!--这里时接口文件的位置-->
<select id="findAll <!-- 接口方法名-->" resultType="com.mxchao.mybatis.domain.User">
select * from user
</select>
</mapper>
8、第一次运行
public void test() throws IOException {
// 1. 读取mybatis配置
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 2. 创建SqlSessionFactory
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(inputStream);
// 3. 使用工厂生产SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4. 使用SqlSession对象创建Dao接口的代理对象
UserDao UserDao = sqlSession.getMapper(UserDao.class);
// 5. 使用代理对象执行方法
List<User> userList = studentDao.findAll();
for (User user : userList) {
System.out.println(user);
}