create database mybatis; use mybatis; drop table if exists tb_user; 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 (1, 'zhangsan', '123', '男', '北京'); INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津'); INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');2、创建项目,模块,导入坐标 1、创建空项目 2、新建模块 3、新建maven项目
新建后的pom文件
mybatis官网
3、pom文件中导入的依赖,编写配置文件1、logback依赖添加后,还需要一个配置文件,放在resources目录下4.0.0 org.example mybatis-demos 1.0-SNAPSHOT 8 8 org.mybatis mybatis 3.5.5 mysql mysql-connector-java 5.1.46 junit junit 4.13 test org.slf4j slf4j-api 1.7.20 ch.qos.logback logback-classic 1.2.3 ch.qos.logback logback-core 1.2.3
logback配置文件
2、创建mybatis-config.xml配置文件,放在resources目录下[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n
4、编写sql映射文件 1、创建UserMapper.xml配置文件,放在resources目录下(要操作哪个表,就以哪个表命名)
此时我们已经写好了sql映射文件,下面再将其加载进mybatis-config.xml文件中
User类,跟数据库表中的数据一样
package com.itheima.pojo;
public class User {
private Integer id;
private String username;
private String password;
private String gender;
private String addr;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + ''' +
", password='" + password + ''' +
", gender='" + gender + ''' +
", addr='" + addr + ''' +
'}';
}
}
2、写核心测试类
package com.itheima;
import com.itheima.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.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisDemo {
public static void main(String[] args) throws IOException {
//1加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2获取SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
//3执行sql,查询所有就用sqlSession的selectList方法,查询单个就是selectOne
//要执行的sql语句,只需要传入对应的唯一标识即可:名称空间.唯一标识
List users = sqlSession.selectList("test.selectAll");
System.out.println(users);
//4释放资源
sqlSession.close();
}
}
6、在idea中配置mysql数据库连接
填入信息
download
解决时区问题
完成
解决连接数据库后写sql代码不提示表名
在resources目录下创建包com.itheima.mapper
将UserMapper.xml配置文件放入新建的包后编译,结果在同一目录下
此时,sql映射文件的路径发生改变,所以要在mybatis配置文件中更改文件路径
通过SqlSession的 getMapper方法获取Mapper接口的代理对象,代理对象调用对应方法完成sql的执行
package com.itheima;
import com.itheima.mapper.UserMapper;
import com.itheima.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.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisDemo2 {
public static void main(String[] args) throws IOException {
//1加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2获取SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
//3执行sql
//List users = sqlSession.selectList("test.selectAll");
//3.1获取UserMapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List users = userMapper.selectAll();
System.out.println(users);
//4释放资源
sqlSession.close();
}
}
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载



