SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream(“mybatis-config.xml”));
//开启缓存
SqlSession session=sqlSessionFactory .openSession();
mybatis配置文件比较多
主配置文件:mybatis-config.xml,主文件的头部约束跟其他的是不一样的
其他配置文件:
select *from user//id是mybatis调用时相当于bean的东西,resultType对应的是类型,parameterType是传入的参的类型
select*from user where id=#{id}//如果是user对象,直接写对应的变量字段名即可。
insert into
user(username,birthday,sex,address)
values(#{username},#{birthday},#{sex},#{address})
//传进来带id和username参数的user,先在user弄好带着两个参的构造器
update user set username=#{username} where id=#{id};
//模糊查询,#{}如果参数是String类型 会自动加上’’; 直 接 字 符 串 拼 接 , 不 做 任 何 处 理 , 有 可 能 会 出 现 s q l 注 入 问 题 , < s e l e c t i d = " s e l e c t U s e r B y U s e r N a m e " r e s u l t T y p e = " 实 体 类 全 限 定 类 名 " p a r a m e t e r T y p e = " S t r i n g " > s e l e c t ∗ f r o m u s e r w h e r e u s e r n a m e l i k e ′ {}直接字符串拼接,不做任何处理,有可能会出现sql注入问题,
//mybatis调用页面
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(“mybatis-config.xml”));
SqlSession session=sessionFactory.openSession();
// 查询所有
// List users=session.selectList(“queryAllUser”);
// for(User user:users) {
// System.out.println(ReflectionToStringBuilder.toString(user,ToStringStyle.MULTI_LINE_STYLE));
// }
//
// 查出来1的对象,再插入
// User user=session.selectOne(“queryUserById”,1);
// session.insert(“insertUser”,user);
// System.out.println(ReflectionToStringBuilder.toString(user,ToStringStyle.MULTI_LINE_STYLE));
// new个对象传进去修改id为3,username改为哈哈
// User user=new User(“哈哈”,3);
// session.update(“updateUserById”, user);
// 根据指定id删除
// session.delete(“deleteUserById”,5);
<–批量操作 数据库的xml配置写法 一般用于批量删除 这里用查询测试 -->
select* from user where id
懒加载
懒加载流程:
UserMapper.xml
OrderMapper.xml
根据id在各自的mapper添加对应的方法,然后调用UserMapper实现懒加载,这个是根据userid在Order查数据
//一级缓存
默认开启 保存在session中 session=sessionFactory.openSession(); 以hashmap的方式存储的,key-语句及其参数,value -运行的结果
//二级缓存
mybatis的单机缓存
先在mybatis-config.xml 的中
usermapper.xml中
可放任意位置,一般放末尾
缓存默认放在磁盘文件中,因此javaBean要实现序列化接口。一般后面用redis存放实现
可全局,也可在想哪个类开缓存就放在哪XXXMapper.xml
测试时。 将上一个事物完全完成之后,才使用缓存,,即第二个事务才开始会有缓存命中率。不用重新在数据库读取数据,即提交和关闭后
二级缓存只能查,不用有插修删操作,不然会清空缓存
select
from



