目录
方式二:指定一个包名,它的默认别名就为这个类的类名,首字母小写
是什么
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
开发步骤
1、连接数据库,导入mybatis和mysql使用的基本jar包(pom.xml中导入)
2、需要sqlSessionFactory对象,为此建造一个工具类(com.liang.utils.MybatisUtils)
3、写mybatis核心配置文件mybatis-config.xml(resources中):连接数据库、Mapper
4、 写实体类(com.liang.pojo.User):有参无参构造器、get()set()方法、toString()方法重写
5、写接口(com.liang.dao.UserMapper)
6、 写实现类(com.liang.dao.UserMapper.xml):namespace绑定一个对应的接口,标签id绑定接口中的方法,标签体为sql语句
CRUD的实现
步骤
1、编写接口(Mapper)
2、编写对应的Mapper.xml
3、测试
万能Map(传参)
假设,我们的实体类,或者数据中的表,字段或者参数过多,我们应当考虑使用Map!
Map传递参数,直接在sql中取出key即可!【parameterType="map"】
对象传递参数,直接在sql中取对象的属性即可!【parameterType="Object"】
只有一个基本类型参数的情况下,可以直接在sql中取到!
多个参数用Map,或者注解!
【接口】
【实现类】
【测试】
模糊查询
方法一:java代码执行的时候,传递通配符%
方法二:在sql拼接中使用通配符
核心配置文件
即mybatis-config.xml
标识出的为重点掌握部分
环境配置(environments)
Mybatis可以配置成适应多种环境
尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一种环境
属性(properties)
这些属性都是可外部配置且动态替换的,既可以在典型的java属性文件中配置,也可以通过properties元素的子元素来传递【db.properties】
编写一个配置文件【db.properties】,在核心配置文件中引入(注意放置的顺序!)
总结
1、可以直接引入外部文件
2、可以在其中增加一些属性配置
3、如果两个文件有同一个字段,优先使用外部配置文件的
类型别名(typesAliases)
目的:为了减少类完全限定名的冗余
方式一:给实体类起别名
方式二:指定一个包名,它的默认别名就为这个类的类名,首字母小写
在实体类比较少的时候,使用第一种方式
如果实体类十分多,建议使用第二种
第一种可以diy别名,第二种如果非要diy,需要在实体类上增加注解@Aliase
设置(settings)
需掌握:全局缓存+懒加载+日志
映射器(mappers)
方式一:resource资源路径
方式二:使用class文件绑定注册
注意点:接口和他的Mapper配置文件必须同名!
接口和他的Mapper配置文件必须在同一个包下!
方式三:使用扫描包进行注入绑定
注意点:接口和他的Mapper配置文件必须同名!
接口和他的Mapper配置文件必须在同一个包下!
解决属性名和字段名不一致的问题
遇到的问题:
例: 数据库中字段名为pwd
实体类中属性名为password
测试程序中无法正确识别password
解决方法1:sql别名
解决方法2:resultMap结果集映射
column数据库中的字段、property实体类中的属性
日志
目的:如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的助手!
常见日志
SLF4J
LOG4J【掌握】
LOG4J2
COMMONS_LOGGINF
STDOUT_LOGGING【掌握】【标准的日志工厂实现】
NO_LOGGING
在mybatis中,具体使用哪一个日志实现,在settings中设置
LOG4J使用步骤
1、导入log4j的包
2、写log4j.properties(放resources中)
3、配置log4j为日志的实现(settings)
4、使用log4j
1、在要使用log4j的类中,导入包
2、日志对象,参数为当前类的class
3、日志级别(info、debug、error)