原始jdbc操作有很大优化空间:
Mybatis框架完成了这些事情。
Mybatis
文档官网:https://mybatis.org/mybatis-3/zh/index.html
持久层框架。DAO层,用于处理数据库。
核心配置文件 sqlMapConfig.xml(老版本xml内部标签按以下顺序)
properties标签用于加载属性文件
配置:
settings标签手动设置当前mybatis使用的日志工具为log4j
配置:
typeAliases标签自定义实体类的别名,一般统一扫描实体类的包即可
使用即可实现domain包下任何类的类名都直接作为不区分大小写的别名使用
配置:
environments标签用于配置mybatis连接数据库的参数
事务管理方式
连接池
配置
mappers标签用于指定我们要加载的映射配置
配置
映射配置文件UserMapper.xml
mapper标签:用于配置DAO的。
属性:namespace:用于指定DAO类的名称,必须是唯一的。写DAO的全类名。
子标签增删改查的标签,用于指定某个操作的sql语句如select、insert、delete、update标签
属性id:对应dao中的方法名
属性resultType:指定该方法的返回值类型,如果返回的是集合,只需要写集合的泛型类型
现在我们用自定义类型来替代
属性parameterType:指定dao方法参数类型,可以在sql语句中,使用#{属性名}格式的表达式获取参数值进行设置,如果参数类型是简单类型,而且只有一个,我们在sql语句中可以使用#{任意字符串}进行参数设置
现在我们用自定义类型来替代
在insert操作时,有时需要获取自动生成的id,可以在insert标签上设置以下属性
useGeneratedKeys="true" 使用自动生成的主键,设置为true即可
###keyColumn="id" 主键列的名称,填写数据库中的列名即可
###keyProperty="id" 实体类中的属性名,和get方法相关
###指定上述属性后,在执行完insert之后,传递的参数位置的实体类会被自动设置上自动生成的主键。