认识什么是Mybatis
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
简单的来说就是:
Mybatis是一种持久化框架,用于Java应用程序和SQL关系数据库之间的交互。它通过XML文件或注解映射Java对象和SQL语句,将Java对象映射到数据库表格中进行操作
mybatis是一个orm框架 odject ,reference mapping
jdbc - ->basedao(工具类) - ->Mybatis(框架) - ->js—>jquery - ->easyui(框架)
Mybatis的特点
- 简化了数据库访问的过程,减少了传统JDBC开发的冗余代码。
- 对SQL语句的灵活支持,可以通过XML文件或注解编写SQL语句,并支持动态SQL。
- 支持多种数据库的访问,包括Oracle、MySQL、SQL Server等。
- 与Spring等框架集成良好,可以与Spring进行无缝整合。
- 提供了强大的缓存机制,可以提高查询性能。
搭建mybatis框架环境
配置mybatis
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://47.100.191.44:3308/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8 jdbc.username=test01 jdbc.password=test01
配置Mapper文件路径
<?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> <!-- 引入外部配置文件 --> <properties resource="jdbc.properties"/> <settings> <setting name="logImpl" value="LOG4J2"/> </settings> <!-- 别名 --> <typeAliases> <!--<typeAlias type="com.javaxl.model.Book" alias="Book"/>--> </typeAliases> <!-- 配置mybatis运行环境 --> <environments default="development"> <environment id="development"> <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --> <transactionManager type="jdbc"/> <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --> <!-- POOLED 表示支持JDBC数据源连接池 --> <!-- UNPOOLED 表示不支持数据源连接池 --> <!-- JNDI 表示支持外部数据源连接池 --> <dataSource type="POOLED"> <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> <mappers> <mapper resource="com/niyin/mapper/BookMapper.xml"/> </mappers> </configuration>
MyBatis搭建与测试
biz:
package com.zhanghao.biz; import com.zhanghao.model.Book; public interface BookBiz { int deleteByPrimaryKey(Integer bid); int insert(Book record); int insertSelective(Book record); Book selectByPrimaryKey(Integer bid); int updateByPrimaryKeySelective(Book record); int updateByPrimaryKey(Book record); }
impl:
package com.zhanghao.biz.impl; import com.zhanghao.biz.BookBiz; import com.zhanghao.mapper.BookMapper; import com.zhanghao.model.Book; public class BookBizimpl implements BookBiz { private BookMapper bookMapper; public BookMapper getBookMapper() { return bookMapper; } public void setBookMapper(BookMapper bookMapper) { this.bookMapper = bookMapper; } @Override public int deleteByPrimaryKey(Integer bid) { return bookMapper.deleteByPrimaryKey(bid); } @Override public int insert(Book record) { return bookMapper.insert(record); } @Override public int insertSelective(Book record) { return bookMapper.insertSelective(record); } @Override public Book selectByPrimaryKey(Integer bid) { return bookMapper.selectByPrimaryKey(bid); } @Override public int updateByPrimaryKeySelective(Book record) { return bookMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(Book record) { return bookMapper.updateByPrimaryKey(record); } }
ultis
package com.zhanghao.utils; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SessionUtil { private static SqlSessionFactory sessionFactory; private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); static { sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml")); } public static SqlSession openSession() { SqlSession session = threadLocal.get(); if (null == session) { session = sessionFactory.openSession(); threadLocal.set(session); } return session; } public static void main(String[] args) { SqlSession session = openSession(); System.out.println(session.getConnection()); session.close(); // System.out.println(session.getConnection()); } }
Mybatis增删改查案
Demo1
package com.zhanghao.demo; import com.zhanghao.biz.BookBiz; import com.zhanghao.biz.impl.BookBizimpl; import com.zhanghao.mapper.BookMapper; import com.zhanghao.model.Book; import com.zhanghao.utils.SessionUtil; import org.apache.ibatis.session.SqlSession; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.text.Bidi; public class demo1 { private SqlSession sqlSession; private BookBiz bookBiz; @Before public void a(){ System.out.println("执行测试之前会执行的初始化代码"); sqlSession= SessionUtil.openSession(); BookBizimpl bookBiz=new BookBizimpl(); BookMapper mapper = sqlSession.getMapper(BookMapper.class); bookBiz.setBookMapper(mapper); this.bookBiz=bookBiz; }; @After public void b(){ System.out.println("执行测试之后会执行"); sqlSession.commit(true); } @Test public void test1(){ System.out.println("测试方法"); Book book = bookBiz.selectByPrimaryKey(35); System.out.println(book); }; @Test public void test2(){ int i = bookBiz.deleteByPrimaryKey(35); System.out.println(i); }; }
总结:
总而言之,Mybatis是Java开发中使用广泛的持久化框架之一。它的灵活性、可扩展性和强大的功能,使得它成为了许多企业级应用程序的首选框架之一。