IDEA2019.3使用MyBatis实现简单的增删改查步骤(MySQL8.0)

粗略步骤
1.mybatis-3.4.6.jar、 mysql-connector-java-8.0.19.jar 
2.conf.xml (数据库配置信息)
3.表、类、映射文件mapper.xml、对应接口、修改配置信息
4.测试
学习视频:https://www.bilibili.com/video/BV1gs411j7kA?p=5

详细步骤
1. 建立项目 导包
mybatis-3.4.6.jar、 mysql-connector-java-8.0.19.jar 
File->Project Structure->Modules->Dependencies->右侧加号->1.jar ,然后选中要导入的那个包。
2.在数据库中建立表,在idea中建立对应的类。
假设表student有三个属性 sno,sname,sage
建立类Student  也有三个属性(现在的类中属性名和表中的列名一致,如果名字不一样需要额外的配置),然后建立无参构造方法
,有参构造方法,set get方法
3.建立映射关系StudentMapper.xml,创建接口StudentMapper.class,配置conf.xml 文件 1)映射关系StudentMapper.xml(建立在src下面的mapper包中 在里面可以写sql语句 ) 1)<?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"> 这些是不变的 2 ) 说明: a.namespace 是接口StudentMapper.class的全类名 b.在查询中 resultType是输出参数 parameterType是输入参数(因为规定输入和输出参数都只能有一个,
所以尽管查询全部学生也要写是Student,在调用的时候可以用List接收),在resultType
="Student"
中本来应该写Student的全类名,但是在conf中配置了全类名的别名为Student,所以这样写. c.id值就是调用的时候唯一之别的,调用的方法与id值对应然后执行里面的sql语句 <mapper namespace="org.student.entity.StudentMapper"> <!-- id 值是唯一的 返回的类型 输入参数的类型--> <!-- 根据学号查学生--> <select id="queryStudentBySno" resultType="Student" parameterType="int"> select * from student where sno = #{sno} </select> <!-- 查全部学生--> <select id="queryAllStudents" resultType="Student" > select * from student </select> </mapper>2)建立接口StudentMapper.class 接口中的方法就是StudentMapper.xml里面的id值 //查询单个学生 Student queryStudentBySno(int sno); //查询全部 List<Student> queryAllStudents(); 3)在conf.xml中 1)引入StudentMapper.xml <mappers> <!-- 加载映射文件 --> <mapper resource="org/student/mapper/StudentMapper.xml"/> </mappers> 2)设置别名 <typeAliases> <!-- 单个别名 (别名 忽略大小写) --> <!-- <typeAlias type="org.student.entity.Student" alias="student"/> --> <!-- 批量定义别名 (别名 忽略大小写),以下会自动将该包中的所有类 批量定义别名:
别名就是类名(不带包名,忽略大小写) --> <package name="org.student.entity"/> </typeAliases> 3)conf.xml中有数据库配置信息,写自己的 url username password

4.测试 写一个测试类 public static void queryStudentBySno() throws IOException { //加载MyBatis配置文件(为了访问数据库) Reader reader = Resources.getResourceAsReader("conf.xml") ; SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ; //session - connection SqlSession session = sessionFactory.openSession() ; StudentMapper studentMapper = session.getMapper(StudentMapper.class); Student student = studentMapper.queryStudentBySno(2020); System.out.println(student); session.close(); } 注意:增删改需要提交事务 public static void deleteStudentBySno() throws IOException { //加载MyBatis配置文件(为了访问数据库) Reader reader = Resources.getResourceAsReader("conf.xml") ; SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ; //session - connection SqlSession session = sessionFactory.openSession() ; StudentMapper studentMapper = session.getMapper(StudentMapper.class); studentMapper.deleteStudentBySno(14); session.commit(); //提交事务 session.close(); }

所用的文件有

1.Student.class (和数据库中的表对应的类,在scr下 org.student.entity包中)

2.StudentMapper.class(接口, 在src下的org.student.mapper包中)

3.StudentMapper.xml(映射文件可以写增删改查的查询语句, 在src下的org.student.mapper包中)

4.conf.xml 在scr下

5.testStudent.class(测试一下,在org.student.test包中)

package org.student.entity;

import com.mysql.cj.jdbc.Blob;

public class Student {
    private int sno;
    private String sname;
    private int sage;
    private String saddress;

    public Student() {

    }
    public Student(int sno, String sname, int sage, String saddress) {
        this.sno = sno;
        this.sname = sname;
        this.sage = sage;
        this.saddress = saddress;
    }

    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public int getSage() {
        return sage;
    }

    public void setSage(int sage) {
        this.sage = sage;
    }

    public String getSaddress() {
        return saddress;
    }

    public void setSaddress(String saddress) {
        this.saddress = saddress;
    }
    @Override
    public String toString() {
        return sno+"-"+this.sname+"-"+this.sage+"-"+this.saddress ;
    }

}
package org.student.mapper;

import org.student.entity.Student;

import java.util.List;

public interface StudentMapper {
    /*
     * 1.方法名和mapper.xml文件中标签的id值相同
     * 2.方法的 输入参数 和mapper.xml文件中标签的 parameterType类型一致 (如果mapper.xml的标签中没有 parameterType,则说明方法没有输入参数)
     * 3.方法的返回值  和mapper.xml文件中标签的 resultType类型一致 (无论查询结果是一个 还是多个(student、List<Student>),在mapper.xml标签中的resultType中只写 一个(Student);如果没有resultType,则说明方法的返回值为void)
     */
    //查询单个学生
    Student  queryStudentBySno(int sno);
    //查询全部
    List<Student> queryAllStudents();
    //增加
    void addStudent(Student student);
    //删除
    void deleteStudentBySno(int sno);
    //修改
    void updateStudentBySno(Student student);

}
<?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="org.student.mapper.StudentMapper">

<!--    id 值是唯一的 返回的类型 输入参数的类型-->
<!--   根据学号查学生-->
    <select id="queryStudentBySno" resultType="Student" parameterType="int">
        select * from student where sno = #{sno}
    </select>


<!--    查全部学生-->
    <select id="queryAllStudents" resultType="Student" >
        select * from student
    </select>

<!--    增加学生-->
    <insert id="addStudent"  parameterType="Student" >
        insert into student(sno,sname,sage,saddress) values (#{sno},#{sname},#{sage},#{saddress})
    </insert>

<!--    <insert id="addStudent" parameterType="student" >-->
<!--        insert into student(stuno,stuname,stuage,graname) values(#{stuNo},#{stuName},#{stuAge},#{graName}  ) -->
<!--    </insert>-->


    <!--    删除学生-->
    <delete id="deleteStudentBySno" parameterType="int">
        delete from student where sno = #{sno}
    </delete>

<!--    修改学生-->
    <update id="updateStudentBySno" parameterType="Student">
        update student set sno=#{sno},sname=#{sname},sage=#{sage},saddress=#{saddress} where sno=#{sno}
    </update>

</mapper>
<?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>
    <!-- 设置单个/多个别名 -->
    <typeAliases>
        <!-- 单个别名 (别名 忽略大小写) -->
        <!-- <typeAlias type="org.lanqiao.entity.Student" alias="student"/> -->
        <!--  批量定义别名  (别名 忽略大小写),以下会自动将该包中的所有类 批量定义别名: 别名就是类名(不带包名,忽略大小写)   -->
        <package name="org.student.entity"/>
    </typeAliases>

    <environments default="development">
      <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
        <!-- 配置数据库信息 -->
          <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
          <property name="url" value="jdbc:MySQL://localhost:3306/hotel?&amp;useSSL=false&amp;serverTimezone=UTC"/>
          <property name="username" value="root"/>
          <property name="password" value="root"/>
        </dataSource>
      </environment>
    </environments>


    <mappers>
        <!-- 加载映射文件 -->
        <mapper resource="org/student/mapper/personMapper.xml"/>
        <mapper resource="org/student/mapper/StudentMapper.xml"/>
        <mapper resource="org/student/mapper/TeacherMapper.xml"/>

    </mappers>

</configuration>
package org.student.test;

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.student.entity.Student;
import org.student.mapper.StudentMapper;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

public class TestStudent {
    public static void queryStudentBySno() throws IOException {
        //加载MyBatis配置文件(为了访问数据库)
        Reader reader = Resources.getResourceAsReader("conf.xml") ;
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
        //session - connection
        SqlSession session = sessionFactory.openSession() ;
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        Student student = studentMapper.queryStudentBySno(2016203491);
        System.out.println(student);
        session.close();
    }
    public static void queryAllStudents() throws IOException {
        //加载MyBatis配置文件(为了访问数据库)
        Reader reader = Resources.getResourceAsReader("conf.xml") ;
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
        //session - connection
        SqlSession session = sessionFactory.openSession() ;
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        List<Student> students = studentMapper.queryAllStudents();
        System.out.println(students);
        session.close();
    }

    public static void addStudent() throws IOException {
        //加载MyBatis配置文件(为了访问数据库)
        Reader reader = Resources.getResourceAsReader("conf.xml") ;
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
        //session - connection
        SqlSession session = sessionFactory.openSession() ;
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        Student student = new Student(1,"张三",19,"济南");
        studentMapper.addStudent(student);

        session.commit(); //提交事务
        session.close();

    }

    public static void deleteStudentBySno() throws IOException {
        //加载MyBatis配置文件(为了访问数据库)
        Reader reader = Resources.getResourceAsReader("conf.xml") ;
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
        //session - connection
        SqlSession session = sessionFactory.openSession() ;
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        studentMapper.deleteStudentBySno(14);

        session.commit(); //提交事务
        session.close();
    }

    public static void updateStudentBySno() throws IOException {
        //加载MyBatis配置文件(为了访问数据库)
        Reader reader = Resources.getResourceAsReader("conf.xml") ;
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
        //session - connection
        SqlSession session = sessionFactory.openSession() ;
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        Student student = new Student(2020,"丸子",19,"北京");
        studentMapper.updateStudentBySno(student);

        session.commit(); //提交事务
        session.close();

    }
    public static void main(String [] args) throws IOException {
//        queryAllStudents();
//        queryStudentBySno();
//        addStudent();
        queryAllStudents();

//        deleteStudentBySno();
//        queryAllStudents();

//        updateStudentBySno();

//        queryAllStudents();
    }
}

猜你喜欢

转载自www.cnblogs.com/ejwbytshooting/p/12651462.html