粗略步骤
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" ?>
/p>
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语句
select* from student where sno =#{sno}
select*from student
(2)建立接口StudentMapper.class接口中的方法就是StudentMapper.xml里面的id值//查询单个学生
Student queryStudentBySno(intsno);//查询全部
ListqueryAllStudents();
(3)在conf.xml中1)引入StudentMapper.xml
2)设置别名
3)conf.xml中有数据库配置信息,写自己的 url username password
4.测试
写一个测试类public static void queryStudentBySno() throwsIOException {//加载MyBatis配置文件(为了访问数据库)
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFactory= newSqlSessionFactoryBuilder().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() throwsIOException {//加载MyBatis配置文件(为了访问数据库)
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFactory= newSqlSessionFactoryBuilder().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包中)
packageorg.student.entity;importcom.mysql.cj.jdbc.Blob;public classStudent {private intsno;privateString sname;private intsage;privateString saddress;publicStudent() {
}public Student(int sno, String sname, intsage, String saddress) {this.sno =sno;this.sname =sname;this.sage =sage;this.saddress =saddress;
}public intgetSno() {returnsno;
}public void setSno(intsno) {this.sno =sno;
}publicString getSname() {returnsname;
}public voidsetSname(String sname) {this.sname =sname;
}public intgetSage() {returnsage;
}public void setSage(intsage) {this.sage =sage;
}publicString getSaddress() {returnsaddress;
}public voidsetSaddress(String saddress) {this.saddress =saddress;
}
@OverridepublicString toString() {return sno+"-"+this.sname+"-"+this.sage+"-"+this.saddress ;
}
}
packageorg.student.mapper;importorg.student.entity.Student;importjava.util.List;public interfaceStudentMapper {/** 1.方法名和mapper.xml文件中标签的id值相同
* 2.方法的 输入参数 和mapper.xml文件中标签的 parameterType类型一致 (如果mapper.xml的标签中没有 parameterType,则说明方法没有输入参数)
* 3.方法的返回值 和mapper.xml文件中标签的 resultType类型一致 (无论查询结果是一个 还是多个(student、List),在mapper.xml标签中的resultType中只写 一个(Student);如果没有resultType,则说明方法的返回值为void)*/
//查询单个学生
Student queryStudentBySno(intsno);//查询全部
ListqueryAllStudents();//增加
voidaddStudent(Student student);//删除
void deleteStudentBySno(intsno);//修改
voidupdateStudentBySno(Student student);
}
/p>
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select* from student where sno =#{sno}
select*from student
insert into student(sno,sname,sage,saddress) values (#{sno},#{sname},#{sage},#{saddress})
delete from student where sno=#{sno}
update student set sno=#{sno},sname=#{sname},sage=#{sage},saddress=#{saddress} where sno=#{sno}
/p>
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
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 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();}
}