MyBatis

本文介绍了如何使用MyBatis进行数据库操作,包括创建`article`, `course`, `stucourse`, `student`, 和 `user` 表,以及如何根据这些表创建User实体类、UserMapper接口和XML映射文件。重点展示了如何执行插入用户信息的操作和配置MyBatis环境。
摘要由CSDN通过智能技术生成

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&amp;characterEncoding=utf-8解决乱码问题-->
                <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;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);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值