一、基础概念
1、什么是Mybatis
1、MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
2、MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
3、MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
4、Mybatis开源项目在GitHub上
2、持久层
数据持久化
1、持久化就是将程序中的瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。
2、内存:断电即失
3、数据库,IO文件持久化
4、生活实例:冷藏(断电即失),罐头
5、为了数据安全
注:内存是随机存储器,RAM具有没有电源就没有数据保留机制的特性
3、为什么使用Mybatis
1、帮助程序员将程序存入到数据库中
2、简化开发,传统的JDBC太过复杂
3、简单易学
二、编写mybatis程序
1、mybatis-config.xml
// configuration核心配置文件
<configuration>
<environment id = "dev">
// 事务管理
<transactionManager type="JDBC /">
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost::3306/...." />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</configuration>
2、MybatisUtils
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //使用mybatis的第一步: 获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { throw new RuntimeException(e); } } public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
3、UserMapper.xml
// namespace绑定一个Mapper 接口
// mapper里面的东西就是该接口的一个实现类
<mapper namespace=com.xxx.xxx.UserDao>
//getUserList是接口的方法名 User是实体类
<select id="getUserList" resultType="com.xxx.xxx.User">
select * from mybatis.user
</select>
</mapper>
4、MybatisUtilsTest
public class MybatisUtilsTest { @Test public void test() { // 获得sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); // 执行SQL 动态代理 getMapper->geBean UserDao mapper = sqlSession.getMapper(UserDao.class); mapper.getUser(); sqlSession.close(); } }
5、UserDao
public interface UserDao { void getUser(); }