准备工作 创建一个maven工程:
1.1 添加Mybatis坐标(导入相关的依赖)
pom.xml
smm_heima com.tian 1.0-SNAPSHOT ../../pom.xml 4.0.0 mybatis_01 mysql mysql-connector-java 8.0.25 org.mybatis mybatis 3.4.6 junit junit 4.13.2 log4j log4j 1.2.17 8 8
1.2 创建User数据表(搭建数据库环境)
执行下列sql语句
CREATE DATAbase `test`; USE `test`; CREATE TABLE `user` ( `id` INT NOT NULL PRIMARY KEY, `username` VARCHAR ( 30 ) DEFAULT NULL, `password` VARCHAR ( 30 ) DEFAULT NULL ) ENGINE = INNODB DEFAULT CHARSET = utf8; INSERT INTO USER (`id`, `username`, `password`) VALUES (1,'thylove', '123456'), (2, 'root', '123456'), (3, 'admin', '123456');
执行结果:
1.3 编写User实体类
User.java
package com.tian.pojo;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + ''' +
", password='" + password + ''' +
'}';
}
}
1.4 编写映射文件UserMapper.xml
UserMapper.xml
select * from user
1.5 编写核心文件SqIMapConfig.xml
准备工作:编写数据库配置文件:
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=317525
正式开始:
SqIMapConfig.xml
1. 传统方式实现
UserDao.java
package com.tian.dao;
import com.tian.pojo.User;
import java.util.List;
public interface UserDao {
List findAll() throws Exception;
}
UserDaoImpl.java
package com.tian.dao.impl;
import com.tian.dao.UserDao;
import com.tian.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class UserDaoImpl implements UserDao {
@Override
public List findAll() throws Exception {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqIMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session回话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作 参数:namespace+id
List userList = sqlSession.selectList("userMapper.findAll");
//释放资源
sqlSession.close();
return userList;
}
}
测试代码:
MyBatisTest.java
package com.tian.test;
import com.tian.dao.impl.UserDaoImpl;
import org.junit.Test;
public class MyBatisTest {
@Test
//查询操作
public void test1() throws Exception {
System.out.println(new UserDaoImpl().findAll());
}
}
运行结果:
2. 接口代理方式实现(常用)
说明:
实例:
-
我们先删除dao层的impl的包
-
修改UserMapper.xml
- 测试:
MyBatisTest.java
package com.tian.test;
import com.tian.dao.UserDao;
import com.tian.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class MyBatisTest {
@Test
//查询操作
public void test1() throws Exception {
// 获取SqlSession
InputStream resourceAsStream = Resources.getResourceAsStream("SqIMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 调用dao层方法
UserDao mapper = sqlSession.getMapper(UserDao.class);
List userList = mapper.findAll();
System.out.println(userList);
}
}
运行结果:
3. 比较2种方式



