Study
Mybatis入门
什么是框架?
概述
- 框架是整个或者部分系统的可重用设计,表现为一组抽象构建及构件实例间交互的方法。(应用)
- 框架可是被应用开发者定制的应用骨架(目的)
不同框架解决不同问题:封装很多细节
持久化解决方案
- JDBC技术:
- Connection
- PreparedStatement
- ResultSet
- Spring的JdbcTemplate
- Apache的DBUtils
以上都只是工具类…不能算是框架。
Mybatis概述
- 是一个基于JAVA持久层的框架,内部封装JDBC,让开发者只需要关注SQL语句本身
- 通过XML或者注解的方式将执行的各种Stateement对象配置起来,并通过JAVA对象和Statement中Sql动态参数进行映射生成最终的SQL语句,最后执行SQL并将结果映射为java对象返回。
- ++ORM思想 实体与数据库的映射++
ORM思想(Object Relational Mapping)
- 将数据库与实体类属性对应.
- ++属性和数据库表的字段名称保持一致++.
Mybatis环境搭建
- GroupId
- 域名反写
- ArtifactId
- 项目名称
基本配置
<configuration>
<!--环境配置-->
<environments default="development">
<!--MySql环境配置-->
<environment id="development">
<!--事务类型-->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!--
配置连接数据的资格基本信息
-->
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/jianyi"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件,每个DAO独立的配置文件 -->
<mappers>
<mapper resource="com/atjianyi/dao/IUserMapper.xml" />
</mappers>
</configuration>
环境搭建的注意事项
- Mybatis中它把持久层的操作接口名称和映射文件叫做Mapper
- mabatis的映射配置文件必须要和dao层结构一致
- 映射配置文件当中命名空间是dao层的全限定类名
- 映射配置文件当中id(select)必须是dao接口的方法名
当遵循了以上四点,开发中就无需写dao的实现类
Mybatis入门案例
框架搭建
1. 引入JAR:注入依赖.md
2. 数据库创建
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`sex` char(2) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
`idcard` varchar(25) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
3. Bean包User创建,对应User表,字段和变量名要相同。
- 实现序列化接口
public class User implements Serializable { //实现序列化结果
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
4. 在resource目录下创建核心配置文件
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--环境配置-->
<environments default="development">
<!--MySql环境配置--><!-- 和spring整合后 environments配置将废除 -->
<environment id="development">
<!--事务类型-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--
配置连接数据的资格基本信息
-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/jianyi"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件,每个DAO独立的配置文件 -->
<mappers>
<mapper resource="com/atjianyi/dao/IUserMapper.xml" />
</mappers>
</configuration>
5. log4j配置{详细键Log4j配置文件}
将其放入于resource通级别
6. 配置Dao接口的映射配置文件(IUserMapper.xml)核心配置中映射的文件
- 查询所有为例子
<?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">
<!--
命名空间为Dao的全限定类名
id为其中的方法名
resultType为pojo
-->
<mapper namespace="com.atjianyi.dao.IUserDao">
<select id="findUserAll" resultType="com.atjianyi.domain.User">
select * from USER ;
</select>
</mapper>
/**
Dao中代码
**/
package com.atjianyi.dao;
import com.atjianyi.domain.User;
import java.util.List;
public interface IUserDao {
List<User> findUserAll();
}
7. 测试
@Test
public void showFindUserAll() throws IOException {
//加载文件流
InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
//生成sqlSession工厂
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//使用工厂类生成对象
SqlSession sqlSession = ssf.openSession();
//sqlSession代理dao层接口
IUserDao dao = sqlSession.getMapper(IUserDao.class);
//调用dao层方法
List<User> userAll = dao.findUserAll();
userAll.forEach(System.out::println);
//清除资源
sqlSession.close();
is.close();;
}