什么是mybatis?
mybatis是一款持久层框架(persistence framework),支持自定义sql,存储过程以及高级映射。
一、新建一个maven项目,在pom.xml中添加依赖:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
二、在java目录下新建mybatis工具类
1.获取sqlSession
代码如下(示例):
package com.z.utils; 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; //sqlSessionFactory --> sqlSession public class MyBatisUtils { private static SqlSessionFactory sqlSessionFactory; static{ String resource = "mybatis-config.xml"; try{ InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch(IOException e){ e.printStackTrace(); } } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
2.定义接口和对应的xml文件
接口代码如下(示例):
import com.z.pojo.Student; import java.util.List; import java.util.Map; public interface StudentMapper { //获取全部用户 List<Student> getStudentList(); List<Student> getStudentLike(String name); //根据id查询用户 Student getStudentById(int id); //增加用户insert int insertStudent(Student student); int addStudent(Map<String, Object> map); //修改用户 int updateStudent(Student student); //删除用户 int deleteStudent(Student student); }
对应的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"> <!-- 绑定对应的/Dao/Mapper接口--> <mapper namespace="com.z.dao.StudentMapper"> <!-- id为方法名--> <select id="getStudentLike" resultType="Student"> select * from db.student where name LIKE "%"#{value}"%" ; </select> <select id="getStudentList" resultType="Student"> select * from db.student </select> <select id="getStudentById" resultType="com.z.pojo.Student" parameterType="int"> select * from db.student where id = #{id}; </select> <insert id="insertStudent" parameterType="com.z.pojo.Student"> insert into db.student (id,name,email,age) values (#{id},#{name},#{email},#{age}); </insert> <insert id="addStudent" parameterType="com.z.pojo.Student"> insert into db.student (id,name) values (#{id},#{name}); </insert> <update id="updateStudent" parameterType="com.z.pojo.Student"> update db.student set name=#{name},email=#{email},age=#{age} where id=#{id}; </update> <delete id="deleteStudent" parameterType="com.z.pojo.Student"> delete from db.student where id=#{id}; </delete> </mapper>
三、编写测试类:
示例:
@Test public void getStudentLiat(){ //获得Session对象 SqlSession sqlSession = MyBatisUtils.getSqlSession(); //方式一: getMapper StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); List<Student> studentList = mapper.getStudentList(); //方式二: // List<Student> objects = sqlSession.selectList("com.z.dao.StudentDao.getStudentList"); for (Student student : studentList) { System.out.println(student); } //关闭sqlSeeseion sqlSession.close(); }
注意:
-
配置文件没有注册(在核心配置文件中进行注册)
<mappers> <mapper resource="com/z/dao/StudentMapper.xml" /> </mappers>
-
绑定接口错误
-
方法名不对
-
返回类型不对
-
Maven导出资源问题
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
总结
-
工具类(需要配置文件resource里面)
-
写配置文件 mybatis-config.xml
-
实体类
-
定义接口,mapper.xml(一定要注册接口!)
-
编写测试类