Mybatis依赖
没有什么依赖就是对原生的Jdbc的封装
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
Mybatis原始版本
最开始是使用配置文件来实现的,需要配置主配置文件和指定的对应的mapper.xml,比如UserMapper.xml,对应的xml在主配置文件里面指定,这里面指定的mapper文件夹不是Java的代码里面的包,而是配置文件下面的路径。
主配置文件如下
<?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">
<configuration>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/hello/mapper/*.xml"/>
</mappers>
</configuration>
子配置文件的头
<?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">
<mapper namespace="com.hello.dao.UserDao">
<select id="queryAll" resultMap="com.hello.domain.User">
select * from user;
</select>
</mapper>
使用的方法很简单
- 1读取配置文件,里面的文件就是放在resources下的总配置文件,名字一致就行
InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
- 2创建SqlSessionFactory工厂,使用自带的实现类。
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
- 3工厂生产SqlSession对象
SqlSession sqlSession = factory.openSession();
- 4对象创建代理对象
UserDao userDao = sqlSession.getMapper(UserDao.class);
- 5使用代理对象执行方法,查询不需要提交,修改的需要提交
List<User> users = userDao.queryAll();
sqlSession.commit();
- 6释放资源
sqlSession.close();
in.close();
Mybatis注解版本
随着配置文件越来越多,对于简单的操作,注解的方式越来收到欢迎。
使用注解,主配置文件使用class属性,扫描包
<mappers>
<mapper class="com.hello.dao.*"/>
</mappers>
然后在Dao的方法上使用注解,来写sql语句
@Select 查询
@Insert 新增
...
注解不使用xml的mapper文件,不管配没配置都会扫描xml文件,如果找到对应的就会出现冲突,所以删除
Mybatis高级
配置数据库配置文件不够灵活,支持外部导入配置文件
比如也是resources下的jdbcConfig.properties配置文件,内容是
...
jdbc.password=123456
...
那么在mybatis主配置文件里面可以直接引入
<properties resource="jdbcConfig.properties" />
然后配置文件里面的,就可以这么写了
<property name="password" value="${jdbc.password}"/>
或者直接使用引入外部的位置,但是不推荐
<properties url="file:///D:/workspace/Java/ssm_hello/src/main/resources/spring-config.xml"></properties>