代码:G:\CODE_MY\heimabase\mybatis\02\day02_eesy_02mybatsiDAO
findAll在Dao的实现层:
public List<User> findAll() {
//1.根据factory获取SqlSession对象
SqlSession session = factory.openSession();
//2.调用SqlSession中的方法,实现查询列表
List<User> users = session.selectList("com.itheima.dao.IUserDao.findAll");//参数就是能获取配置信息的key,根据这个key去找sql语句
//3.释放资源
session.close();
return users;
}
mybatis还是支持的,实际开发不这么写。
------------------------------------------------01----------------------------------------------------
看下findById:
其他的crud看代码就可以了。
public User findById(Integer userId) {
//1.根据factory获取SqlSession对象
SqlSession session = factory.openSession();
//2.调用SqlSession中的方法,实现查询一个
User user = session.selectOne("com.itheima.dao.IUserDao.findById",userId);
//3.释放资源
session.close();
return user;
}
-----------------------------------------------02-------03------------------------------------
流程图片:
流程:
第一步:进到DefaultSqlSession:
delete用的是update
第二步:CachiingExceutor
第三步:
第四步:
第五步:
第六步:
第七步:
-----------------------------------------------04-------------05----------------------------------------------
不写实现类的话,这个图片:
切换导mybatis的crud那个工程。
第一步:找getMapper方法。去DefaultSqlSession找。
第二步:
第三步:
第四步:
第五步:动态代理
关注的是
第六步:
第七步:
第八步:
-----------------------------------------------06----------------------------------------------------
增删改我们分析清楚了。
第一步:直接进入DefaultSqlSession
第二步:
第三步:
第四步:
第五步:
第六步:
第七步:
-----------------------------------------------------------07-----------------------------------------------------------------
代码:G:\CODE_MY\heimabase\mybatis\02\day02_eesy_01mybatisCRUD
改造下---:
这样写是无意义的主要是看下以后如果优化,这个只是过渡。支持放在外部的配置文件。
写法:
配置properties
可以在标签内部配置连接数据库的信息。也可以通过属性引用外部配置文件信息
resource属性: 常用的
用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
url属性:
是要求按照Url的写法来写地址
URL:Uniform Resource Locator 统一资源定位符。它是可以唯一标识一个资源的位置。
它的写法:
http://localhost:8080/mybatisserver/demo1Servlet
协议 主机 端口 URI
URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。
我们看下底下的就是引用上面的测试的用例。
所以也是支持在外部的引用的。
也可以是这么写的
我们看下其中的区别:
<!-- 配置properties
可以在标签内部配置连接数据库的信息。也可以通过属性引用外部配置文件信息
resource属性: 常用的
用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
url属性:
是要求按照Url的写法来写地址
URL:Uniform Resource Locator 统一资源定位符。它是可以唯一标识一个资源的位置。
它的写法:
http://localhost:8080/mybatisserver/demo1Servlet
协议 主机 端口 URI
mybatisserver/demo1Servlet:这个就是URI在应用唯一定位一个资源的
URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。
-->
-----------------------------------------------08----------------------------------------------------
之前的参数可以是int或者INT或者Integer是因为把这些别名都配置进去了。。。。。现在我们的User是不可以的是因为没有配置别名。
我们也配置别名typeAliases指定别名:
<!--使用typeAliases配置别名,它只能配置domain中类的别名 -->
<typeAliases>
<!--typeAlias用于配置别名。type属性指定的是实体类全限定类名。alias属性指定别名,当指定了别名就不再区分大小写 -->
<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>
</typeAliases>
可以这么写的:
也可以这么写,大小写其实是不区分的:
设置typeAliases下面的package:
<!--使用typeAliases配置别名,它只能配置domain中类的别名 -->
<typeAliases>
<!--typeAlias用于配置别名。type属性指定的是实体类全限定类名。alias属性指定别名,当指定了别名就再区分大小写
<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>-->
<!-- 用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写-->
<package name="com.itheima.domain"></package>
</typeAliases>
-------------------------------------------------------------------
package:同理我也可以这么写的,这个也可以只改包,不具体到xml了。
!-- 配置映射文件的位置 -->
<mappers>
<!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
<!-- package标签是用于指定dao接口所在的包,当指定了之后就不需要在写mapper以及resource或者class了 -->
<package name="com.itheima.dao"></package>
</mappers>
找到dao接口和接口的映射配置,因为路径是一样的。
-----------------------------------------------09----------------------------------------------------