1.什么是MyBatis
MyBatis是一个支持普通SQL查询、存储过程及高级映射的持久层框架
通过项目了解MyBatis
(1)数据库创建表
/*
SQLyog Ultimate v11.24 (32 bit)
MySQL - 5.5.43 : Database - test
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;
/*Table structure for table `article` */
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
/*Data for the table `article` */
insert into `article`(`id`,`userid`,`title`,`content`) values (1,1,'test_title','test_content'),(2,1,'test_title_2','test_content_2'),(3,1,'test_title_3','test_content_3'),(4,1,'test_title_4','test_content_4'),(5,2,'test_title_5','test_content_5');
/*Table structure for table `course` */
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`cid` varchar(20) NOT NULL,
`cname` varchar(20) NOT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `course` */
insert into `course`(`cid`,`cname`) values ('c01','计算机基础'),('c02','C语言程序设计'),('c03','JAVA程序设计'),('c04','JSP动态网站开发');
/*Table structure for table `stucourse` */
DROP TABLE IF EXISTS `stucourse`;
CREATE TABLE `stucourse` (
`sc_id` varchar(20) DEFAULT NULL,
`s_id` varchar(20) DEFAULT NULL,
`c_id` varchar(20) DEFAULT NULL,
KEY `s_id` (`s_id`),
KEY `c_id` (`c_id`),
CONSTRAINT `stucourse_ibfk_2` FOREIGN KEY (`c_id`) REFERENCES `course` (`cid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `stucourse_ibfk_1` FOREIGN KEY (`s_id`) REFERENCES `student` (`sid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `stucourse` */
insert into `stucourse`(`sc_id`,`s_id`,`c_id`) values ('sc01','s01','c01'),('sc02','s01','c03'),('sc03','s02','c01'),('sc04','s03','c03'),('sc05','s04','c04');
/*Table structure for table `student` */
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`sid` varchar(20) NOT NULL,
`sname` varchar(20) NOT NULL,
`supervisor_id` varchar(20) NOT NULL,
PRIMARY KEY (`sid`),
KEY `supervisor_id` (`supervisor_id`),
CONSTRAINT `student_ibfk_1` FOREIGN KEY (`supervisor_id`) REFERENCES `teacher` (`tid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `student` */
insert into `student`(`sid`,`sname`,`supervisor_id`) values ('s01','张三','t01'),('s02','李四','t01'),('s03','王五','t02'),('s04','赵六','t02'),('s05','黄七','t03'),('s06','刘八','t03');
/*Table structure for table `teacher` */
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`tid` varchar(20) NOT NULL,
`tname` varchar(20) NOT NULL,
PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `teacher` */
insert into `teacher`(`tid`,`tname`) values ('t01','张老师'),('t02','王老师'),('t03','李老师');
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(50) DEFAULT NULL,
`userAge` int(11) DEFAULT NULL,
`userAddress` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
/*Data for the table `user` */
insert into `user`(`id`,`userName`,`userAge`,`userAddress`) values (1,'summer',100,'shanghai,pudong'),(6,'张三',70,'重庆市'),(8,'杨塞',20,'重庆市'),(12,'李四',20,'天津');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
(2)根据数据库表字段创建实例
package com.it.entity;
public class User {
private Integer id;
private String userName;
private Integer userAge;
private String userAddress;
//生成setget toString() 构造方法
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 Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", userAge=" + userAge +
", userAddress='" + userAddress + '\'' +
'}';
}
public User() {
}
public User(Integer id, String userName, Integer userAge, String userAddress) {
this.id = id;
this.userName = userName;
this.userAge = userAge;
this.userAddress = userAddress;
}
}
package com.it.mapper;
public interface UserMapper {
//z增删改的方法基本上返回值是int类型,或者void,int类型表示受影响的行数
//添加一个用户信息
int insertUser();
}
UserMapper.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">
<!--namespace: 对应接口的全称(包名+接口名)-->
<mapper namespace="com.it.mapper.UserMapper">
<insert id="insertUser">
insert into user values(null ,'赵云',20,'长山')
</insert>
</mapper>
mybatis-configxml文件
<?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>
<!-- 设置日志输出-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/><!--?useUnicode=true&characterEncoding=utf-8解决乱码问题-->
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/it/mapper/UserMapper.xml"/>
</mappers>
</configuration>
package com.it.test;
import com.it.mapper.UserMapper;
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;
public class Demo {
public static void main(String[] args) throws IOException {
//加载配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//构建工程对象
SqlSessionFactory sqlSessionFactory = builder.build(is);
//获取session对象
SqlSession session = sqlSessionFactory.openSession();
//获取mapper对象
UserMapper userMapper = session.getMapper(UserMapper.class);
//执行语句
int i = userMapper.insertUser();
//手动提交事务 数据库才会添加成功
session.commit();
System.out.println(i);
}
}