一:什么是mybatis。
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀ORM框架。MyB
目录
atis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置 和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记 录. 半自动化框架。必须写sql语句。
二:如何使用mybatis。
(1)创建一个maven的java工程
(2)引入mybatis的依赖和mysql的驱动jar包
(3)创建相应的实体类
右图为引入的lombok依赖,简化实体类中的set和get方法以及tostring方法和构造方法
(4)配置mybatis的配置文件.xml。mybatis会自动读取配置文件并连接数据库。
(5)编写映射文件,映射文件为实体类与数据库表的映射。并把映射文件引入到mybatis配置中使用。
映射文件中的sql语句select语句中要有返回类型,其值要与namespace的值相同
(6)编辑实体类的Dao接口,并写入需要的方法。
(7)引入junit依赖,写测试方法测试
二:传递多个参数。
如果方法传递的是多个参数时,有一下两种处理方式:
1.需要把占位符里面的名字改为param1、param2........
2可以在方法中每个参数前添加@Param(""),Sql语句中的占位符需要与("")中的命名一样。
三:特殊字符
在映射文件中有些字符不能使用,处理方法有: 建议使用第二种方法。
1.使用转义字符,如下
2:使用<![CDATA[含有特殊字符的Sql语句]]>
四:mybatis的优化
1.数据库连接的优化
(1)定义一个数据库属性文件 .properties,在该文件下写入,切记不能添加双引号。
2.引入日志文件,便于更好的显示Sql语句和查找错误。
(1)引入log4j依赖
(2)引入日志的配置文件,输出地址可以自己设定
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
五:字段名和属性名不一致。建议使用第二种字段映射方法.
解决方法:
1.给查询的列起别名,别名与属性名一致。如下
2.字段映射。
查询时不能使用resultType属性, 必须使用resultMap属性。resultType属性:返回值类型为基本数据类型。 resultMap属性:返回值的类型不是基本数据类型的时候使用,比如返回值是一个对象时。
六:动态Sql语句查询:Sql语句根据查询条件的改变而改变
理解上图元素的含义,使用时要熟练掌握Sql的增删改查语句
注意:查询时尽量不要使用 * 把需要查询的字段写在一个Sql标签中,
七:分页查询
(1)引入分页查询依赖
(2)加入拦截
注意加入拦截的位置,位置错误会报错
(3)Sql分页查询语句
select * from 表名 limit 0,5;
注意:limit后面有两个参数,参数必须是一个整数常量。
第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。
select * from 表名 limit (page-1)*pageSize,pageSize;
page:当前要显示的页码。
pageSize: 每页显示的条数。