MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2. 编写Mybatis的步骤
首先我们要写一个Mybatis的核心配置文件,我们一般叫Mybatis-config.xml,这个名字其实是可以随便起的,但是我们有一句话叫约定大于配置.
Mybatis.config.xml文件代码
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
select * from aaa
第六步 执行方法
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文件代码
delete from aaa where id=#{id}
执行代码
SqlSession sqlSession = Util.getSqlSession();
DemoMapper mapper = sqlSession.getMapper(DemoMapper.class);
int delete = mapper.getDelete(1014);
System.out.println("成功删除id为1014的学生信息");
sqlSession.close();
增加:
insert into aaa (id,myname,sex,myaddress) values(#{id},#{myname},#{sex},#{myaddress})
执行代码
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 map = new HashMap();
map.put("name", "李四");
map.put("sid", 1015);
List set = mapper.getSet(map);
for (aaa aaa : set) {
System.out.println(aaa);
}
sqlSession.close();
未完待续



