MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2. 编写Mybatis的步骤
首先我们要写一个Mybatis的核心配置文件,我们一般叫Mybatis-config.xml,这个名字其实是可以随便起的,但是我们有一句话叫约定大于配置.
Mybatis.config.xml文件代码
<?xml version="1.0" encoding="UTF-8"?>
dp.properties里面写数据库的信息
第二步 我们需要写一个Mybatis工具类
Utils.java
package 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;public class Util { public static SqlSessionFactory sqlSessionFactory; static { try { //获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //获取sqlSession对象,它完全包含了面向数据库执行SQL语句所需的所有方法 public static SqlSession getSqlSession() { if(sqlSessionFactory==null){ System.out.println("这个是空的"); } //自动提交 return sqlSessionFactory.openSession(true); }}
这里要特别注意sqlsessionFactory的作用域,我第一次就在这里遇到空指针异常
第三步 创建实体类
这一步就很简单了,跟数据库中的字段对应上就可以了,具体的代码就不写了,我们一般叫这种模型起名叫POJO
第四步 写一个Mapper接口
写一个方法
package Mapper;import Models.aaa;import java.util.List;public interface DemoMapper { List getInsert();}
查询表里面的所有信息
第五步 编写Mapper配置文件
DemoMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
第六步 执行方法
package Test01;import Mapper.DemoMapper;import Models.aaa;import Utils.Util;import org.apache.ibatis.session.SqlSession;import java.util.List;public class Test { public static void main(String[] args) { SqlSession sqlSession = Util.getSqlSession(); DemoMapper mapper = sqlSession.getMapper(DemoMapper.class); List insert = mapper.getInsert(); for (aaa aaa : insert) { System.out.println(aaa); } sqlSession.close(); }}
增删改都是一样的,写一个方法,然后在Mapper.xml文件里面配置
删除:
Mapper.xml文件代码
执行代码
SqlSession sqlSession = Util.getSqlSession(); DemoMapper mapper = sqlSession.getMapper(DemoMapper.class); int delete = mapper.getDelete(1014); System.out.println("成功删除id为1014的学生信息"); sqlSession.close();
增加:
执行代码
SqlSession sqlSession = Util.getSqlSession(); DemoMapper mapper = sqlSession.getMapper(DemoMapper.class); aaa aaa = new aaa(1015, "张三", "未知", "泰国"); mapper.getChange(aaa); sqlSession.close();
万能Map,这个是我们最常用的
我们要查询一个学生信息,条件为id和姓名
执行方法
qlSession sqlSession = Util.getSqlSession(); DemoMapper mapper = sqlSession.getMapper(DemoMapper.class); Map
未完待续