mybatis的框架原理图
1.什么是mybatis?
mybatis是一个持久层的框架,它是apache下的顶级框架,它托管到goolecode平台,最后又托管到github平台,主要共呢个是根据映射将sql语句写入到xml文件当中,实现了sql语句的半自动化(sql语句根据需求自己编写)
2.mybatis的原理:
3.mybatis框架的使用环境搭建
3.1 工具:eclipse、 jdk、 数据库
3.2 jar包:
mysql的驱动包:mysql-connector-5.1.22.jar
mybatis的依赖包和核心包: lib文件夹下是mybatis的依赖包 mybatis-3.2.7.jar是核心包
3.3 工程目录:
首先根据mybatis的依赖包:我们在与src同目录下创建config文件夹下创建log4j.properties文件
log4j.properties文件的头部:在mybatis的使用手册当中可以找到
此处注意的是日志的级别是五级:分别是fatal debug error info warning 。rootlogger的值一般是debug因为我们经常需要在debug下进行调试。当然该配置文件当中也可以配置其他的日志 例如:mysql的sql语句日志 如下:
log4j.logger.java.sql.connection=DEBUG
log4j.logger.java.sql.preparedStatement=DEBUG
log4.logger.java.sql.preparedStatement=DEBUG
- ### 把日志信息输出到控制台 ###
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- #log4j.appender.stdout.Target=System.err
- log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
- ### 把日志信息输出到文件:jbit.log ###
- #log4j.appender.logfile=org.apache.log4j.FileAppender
- #log4j.appender.logfile.File=jbit.log
- #log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
- #log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
- ###显示SQL语句部分
- #log4j.logger.com.mybatis=DEBUG
- #log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG // datasource是在jndi里设置的,无法显示。
- #log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG
- #log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
- #log4j.logger.java.sql.Connection=DEBUG
- #log4j.logger.java.sql.Statement=DEBUG
- #log4j.logger.java.sql.PreparedStatement=DEBUG
- #log4j.logger.java.sql.ResultSet=DEBUG //本地测试的时候输出的是一个list对象,无法显示resultset
然后建立全局配置文件:sqlMapConfig.xml
在该文件中加载配置文件<Maps>
<Map resource="映射文件的位置"></Map>
</Maps>
在该文件中配置事物、和数据源
最后建立映射文件: xxxMapper.xml
在该文件中配置sql语句:
首先配置命名空间:<Maps>
<namespace=""> //命名空间
//id表示sql语句的id,标识sql语句,将sql语句封装到MappedStatement当中 所以也称作statement的id parameterType参数类型 可以是简单的值类型 也可以是String类型
//也可以是pojoi类型 resultType:指定数据结果的java映射,select指定将resultType的单条记录映射成java对象
<select id="" parameteType="String" resultType="pojo实体">
select * from shujubiao where id=#{ id }
</select>
//此处注意 模糊查询查出来的数据是多条 但是 resultType类型也是pojo实体,因为select将resultType的 单条记录映射成java对象
<select id="" parameteType="String" resultType="pojo实体">
select * from shujubiao where username like ='%${username}%'
</select>
</Maps>
//另外:#{}这个是占位符,会自动加上双引号,${}是拼接符号,表示拼接的内容原样输出 平常的写法应该 是#{value}、%${value}%
// ${} 容易造成sql注入的问题 如果输入的参数类型是简单的数据类型 必须使用${value)
// resultType就是单条记录所映射到的java对象
4 .代码书写