一:mybatis是什么?
mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。 mybatis通过xml 或注解的方式将要执行的各种statement配置起来,并通过java对象和statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并 返回。
二:mybatis的思想
采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc进行了封装,屏蔽了 jdbc api 底层访问细节,使我 们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
三:mybatis的使用
1.创建maven工程
2.在pom.xml中添加mybatis的坐标 、junit的坐标、mysql的坐标、日志log4j
的坐标、同时作为测试的时候添加junit的坐标,有时候会因为中文报错添加
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>9</java.version>
<maven.compiler.source>9</maven.compiler.source>
<maven.compiler.target>9</maven.compiler.target>
</properties>
3.编写实体类:比如user
4.编写持久层接口 useDao
5.编写持久层接口的映射文件userDao.xml ,所在resource资源下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5.2.写mapper中namespace="userdao的包类" 然后下面就是配置所有的操作,增删改查
注意的是<select>或者其他中的id要与userdao中的方法一样
6.编写sqlMapConfig.xml配置文件
6.1同样的进行导入
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
6.2 配置 <configuration> ->mybatis环境 -mysql的环境 ->配置事务的类型->配置数据库的信息,用的是数据源连接池(其中连接数据库的配置可以提取出来)如下
6.3. 配置mappers 告知mybatis映射配置的位置 resource=“userdao/.xml”
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=admin
<configuration>
<!--配置properties url就是上面的路径-->
<properties url="file:///E:/javaSSM/mybatis/day01_mybatis_dao/src/main/resources/jdbcConfigure.properties">
<!--
<properties resource="jdbcConfigure.properties">
-->
</properties>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="dao\IuserDao.xml"/>
</mappers>
</configuration>
- 编写测试类,初始值的搭建
@Before
public void init()
{
//1.读取配置
is = Resources.class.getResourceAsStream("/X1sqlMybatisConfig.xml");
//2.创建SqlSessionFactory工厂 mybatis使用了构建者模式(类似工厂)
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
sqlSession = factory.openSession();
iuserDao = sqlSession.getMapper(IuserDao.class);
}
此外:需要在resource下配置日志:log4j.properties
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{
ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{
ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
四:注解配置
1.在持久层接口中
public interface IUserDao {
@Select("select * from user")
List<User> findAll(); }
2.修改映射的配置文件
<mappers>
<mapper class="dao.IUserDao"/> </mappers>
3.不建议使用,因为逻辑业务多了并不方便。