mybatis
文档网址 https://mybatis.org/mybatis-3/zh/index.html
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210716230451652.png#pic_center
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210716230451587.png#pic_center
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210716230615869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdfemhvbmdfcm9uZw==,size_16,color_FFFFFF,t_70#pic_center
多对1建议用这种
1对多建议用这种
动态sql
缓存
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210716231126706.png#pic_center
public class Test {
@org.junit.Test
public void test() throws IOException {
//1.读取配置文件,导包是导org.apache.ibatis.io.Resources;的包
InputStream inputStream = Resources.getResourceAsStream("mapper-config.xml");
//2.new 一个sqlsessionfactoryBuilder的一个工厂类,调用其build的一个工具类
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
//3.通过build构建调用opensession()来获得一个sqlsession对象
SqlSession sqlSession = build.openSession();//设置自动提交事务autocommit默认是false,如果为true则是自动提交事务
//4.通过sqlsession对象调用getMapper 通过接口.class的方式来获取接口的实现类对象
UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
Users users=new Users();
users.setUserid("23");
users.setStatus("vip");
users.setUsername("shuhoa");
users.setPwd("666");
mapper.saveUsers(users);
//提交数据,要不然数据库不更新
sqlSession.commit();
}
### 接口类
```java
//下订单2
int save2(@Param("orders") List<Order> orders);
mybatis插入多条数据
<!--collection要写的就是刚刚OrderMapper的@Param("orders")指定 的参数名orders
item就是集合里面的对象order
所以collection,item 相当于jsp中的items=""与var=""
-->
<insert id="save2" parameterType="java.util.List">
INSERT INTO `ORDER`
(OID,TOTAL,BOOKID,DID)
VALUES
<foreach collection="orders" item="order" separator=",">
(
<if test="order.oid!=null">#{order.oid},</if>
<if test="order.total!=0">#{order.total},</if>
<if test="order.bookinfo.bookid!=null">#{order.bookinfo.bookid},</if>
<if test="order.orderDetails.did!=null">#{order.orderDetails.did}</if>
)
</foreach>
</insert>
mybatis的事务管理类型
引用sql片段
<sql id="aa">
userid,
username,
pwd,
status
</sql>
引用:<include refid ="aa">
spring中,引用外部的properties
```xml
<!-- 载入外部的properties文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>