一、环境配置:
添加jar包:
mybatis-3.5.4.jar;
mysql-connector-java-8.0.19.jar;
二、
实体类A;
映射文件Amapper.xml;
接口interface A;
四、
配置文件conf.xml;
示例:
src
com.entity
Student.java
com.mapper
Studentmapper.java//接口
studentmapper.xml
com.test
Test.java
conf.xml
//实体类Student
package com.entity;
public class Student {
private int age;
private int id;
private String name;
public Student() {
}
public Student(int age, int id, String name) {
this.age = age;
this.id = id;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name+" "+this.id+" "+this.age;
}
}
//映射文件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.mapper.StudentMapper">//实体类相应接口
<select id="queryStudentById" parameterType="int" resultType="Student" >//parameterType输入值类型,#{}; resultType返回值类型,查询结果
select * from Student where id = #{id}//表中字段=#{输入值}
</select>
<select id="queryALLstudent" resultType="com.entity.Student" >//全类名
select * from Student
</select>
<insert id="addStudent" parameterType="com.entity.Student">
insert into Student(id,name,age) values(#{id},#{name},#{age})
</insert>
<delete id="deleteStudent" parameterType="int">
delete from Student where id=#{id}
</delete>
<update id=
"updateStudent" parameterType="com.entity.Student">
update Student set id=#{id},name=#{name},age=#{age}
</update>
</mapper>
//接口StudentMapper
package com.mapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.entity.Student;
public interface StudentMapper {
public Student queryStudentById(int id);//返回类型对应ResultType; 方法名对应id; 形参类型对应ParameterType
public List<Student> queryALLstudent();
public void addStudent(Student student);
public void deleteStudent(int id);
public void updateStudent(Student student);
//配置文件conf.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">//通过environments的default值 和 environment的 id 来指定 MyBatis运行时的数据库环境
<environment id="development">//开发环境(自己的计算机)
<transactionManager type="JDBC"/>//事务提交方式:JDBC:利用JDBC方式处理事务(commit rollback close);;;MANAGED:将事务交由 其他组件去托管(spring ,jobss),默认 会关闭连接。
<dataSource type="POOLED">//数据源类型:UNPOOLED:传统的JDBC模式(每次访问数据库,均需要 打开、关闭等数据库操作,但是 打开、关闭数据库是比较消耗性能的);;;POOLED:使用数据库连接池;;;JNDI:从tomcat中获取一个内置的数据库连接池 (数据库连接池-数据源 )
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/a?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/entity/personMapper.xml"/>
</mappers>
</configuration>
//测试类Test
package com.test;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.entity.Student;
import com.mapper.StudentMapper;
public class Test {
public static void queryStudentById() throws IOException {
Reader reader=Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"development");//指定本地环境类型
SqlSession session =sessionFactory.openSession();
StudentMapper studentmapper=session.getMapper(StudentMapper.class);
//以上四步
Student student=studentmapper.queryStudentById(3);//Test-->接口中的方法-->mapper.xml中的sql语句-->db
System.out.println(student);
session.close();
}
public static void queryAllstudent() throws IOException {
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
SqlSession session = sessionFacotry.openSession() ;
StudentMapper studentmapper=session.getMapper(StudentMapper.class);
List<Student>students=studentmapper.queryALLstudent();
session.commit();
System.out.println("查询所有学生");
for(Student s:students) {
System.out.println(s);
}
session.close();
}
public static void addStudent() throws IOException
{
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
SqlSession session = sessionFacotry.openSession() ;
StudentMapper stumap=session.getMapper(StudentMapper.class);
Student student=new Student(30,4,"wyf",true);
stumap.addStudent(student);
session.commit();
System.out.println("增加:"+student);
queryAllstudent();
session.close();
}
public static void deleteStudent() throws IOException
{
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
SqlSession session = sessionFacotry.openSession() ;
StudentMapper stumap=session.getMapper(StudentMapper.class);
stumap.deleteStudent(4);
session.commit();
System.out.println("删除:4号");
queryAllstudent();
session.close();
}
public static void updateStudent() throws IOException
{
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
SqlSession session = sessionFacotry.openSession() ;
StudentMapper stumap=session.getMapper(StudentMapper.class);
Student student =new Student(24,1,"czj",true);
stumap.updateStudent(student);
session.commit();
System.out.println("更新:"+student);
queryAllstudent();
session.close();
}
public static void main(String args[]) throws IOException {
System.out.println("一:");
queryStudentById();
System.out.println("二:");
addStudent();
System.out.println("三:");
deleteStudent();
System.out.println("四:");
updateStudent() ;
}
}
mybatis约定:
输入参数parameterType 和 输出参数resultType ,在形式上都只能有一个
如果输入参数 :是简单类型(8个基本类型+String) 是可以使用任何占位符,#{xxxx}
如果是对象类型,则必须是对象的属性 #{属性名}
输出参数: 如果返回值类型是一个 对象(如Student),则无论返回一个、还是多个,
再resultType都写成com.entity.Student