准备工作
1)打开我的eclipse,创建一个java项目。
2)解压下载好的mybatis.zip,找到里面的mybatis-x.x.x.jar,加入build path中
3)因为mybatis是ORM框架,所以少不了数据库,添加mysql驱动到build path
4)准备数据
CREATE DATABASE`test`;
USE `test`;
CREATE TABLE `classes` (
`cid` INT(10) NOT NULL AUTO_INCREMENT,
`cname` VARCHAR(20),
PRIMARY KEY (`cid`)
);
INSERT INTO `classes` VALUES (1001,'yc01'),(1002,'yc02');
CREATE TABLE `student` (
`sid` INT(10) NOT NULL AUTO_INCREMENT,
`sname` VARCHAR(20),
`age` INT(4),
`email` VARCHAR(50),
`tid` INT(10),
`cid` INT(10),
PRIMARY KEY (`sid`)
);
INSERT INTO `student` VALUES
(100001,'张三',17,'123@qq.com',1001,1001),
(100002,'李四',16,'456@qq.com',1001,1001),
(100003,'王五',17,'abc@qq.com',1002,1002);
CREATE TABLE `teacher` (
`tid` INT(10) NOT NULL AUTO_INCREMENT,
`tname` VARCHAR(20),
PRIMARY KEY (`tid`)
);
INSERT INTO `teacher` VALUES (1001,'李明'),(1002,'张丽');
这是目录结构
使用mybatis
核心配置文件配置,一个最基本的mybatis-config.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">
<!-- 采用jdbc的事务管理 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mysql?useSSL=false" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!-- 注册sql映射文件 -->
<mappers>
<mapper resource="com/myl/dao/StudentMapper.xml"/>
</mappers>
</configuration>
注意事项:(我在创建时报的错)
这里是configuration不是mapper如果是的,会报错
如果报MYSQL:WARN: Establishing SSL connection without server's identity verification is not recommended....的错误则加上useSSL=false即可解决
pojo 模型创建
package com.myl.pojo;
import java.io.Serializable;
public class Student implements Serializable{
private static final long serialVersionUID = -6237347458729826384L;
private Integer sid;
private String sname;
private Integer age;
private String email;
private Integer tid;
private Integer cid;
public Student(Integer sid, String sname, Integer age, String email, Integer tid, Integer cid) {
super();
this.sid = sid;
this.sname = sname;
this.age = age;
this.email = email;
this.tid = tid;
this.cid = cid;
}
public Student() {
super();
}
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getTid() {
return tid;
}
public void setTid(Integer tid) {
this.tid = tid;
}
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", age=" + age + ", email=" + email + ", tid=" + tid
+ ", cid=" + cid + "]";
}
}
sql 映射文件配置com/yc/dao/StudentMapper.xml
<?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.myl.StudentMapper">
<select id="selectStudentById" resultType="com.myl.pojo.Student">
select * from student where sid=#{sid}
</select>
</mapper>
测试代码
package com.myl.demo;
import java.io.IOException;
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 com.myl.pojo.Student;
public class Demo {
public static void main(String[] args) {
try {
//创建sqlSessionFactory会话工厂
SqlSessionFactory factory=new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream("mybatis-config.xml"));
//获取sqlSession与数据库交互的会话对象
SqlSession session=factory.openSession();
//查询数据
Student student=session.selectOne("com.myl.StudentMapper.selectStudentById",100001);
System.out.println(student);
//提交事务
session.commit();
//关闭会话
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}