【笔记】框架之MyBatis

简介:
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis对JDBC访问数据库的过程进行了封装,简化了JDBC代码,解决JDBC将结果集封装为Java对象的麻烦。
PS:由于<>会 被编辑器识别为标签,所以本文用()代替<>
使用:

  • 1.导入依赖
    (dependency)
    (groupId)org.mybatis(/groupId)
    (artifactId)mybatis(/artifactId)
    (version)3.2.8(/version)
    (/dependency)

  • 2.设置配置文件

    • 2.1 mapper.xml //文件名可以随意,但后面会引用
      (mapper namespace=“EmpMapper”)
      (!-- 在mapper标签内部可以配置很多字标签:select/insert/delete/update等 --)
      (select id=“findAll” resultType=“com.cy.pojo.Emp”)(!–resultType指定结果集用什么类型来封装 --)
      select * from emp
      (/select)
      (/mapper)

    • 2.2 mybatis-config.xml
      (configuration)
      (!-- 配置开发环境 --)
      (environments default=“test”) (!-- 可以指定用test还是test2的配置 --)
      (environment id=“test”)
      (!-- 配置事务管理方式 JDBC/MANAGED --)
      (transactionManager type=“JDBC”)(/transactionManager)
      (!-- 配置连接数据库的基本信息 POOLED(连接池)/UNPOOLED/JNDI --)
      (dataSource type=“POOLED”)
      (property name=“driver” value=“com.mysql.cj.jdbc.Driver” /)
      (property name=“url” value=“jdbc:mysql:///yonghedb?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false” /)
      (property name=“username” value=“root” /)
      (property name=“password” value=“root” /)
      (/dataSource)
      (/environment)
      (!-- (environment id=“test2”) 配置事务管理方式 JDBC/MANAGED (transactionManager
      type=“JDBC”)(/transactionManager) 配置连接数据库的基本信息 POOLED(连接池)/UNPOOLED/JNDI
      (dataSource type=“POOLED”) (property name=“driver” value=“com.mysql.cj.jdbc.Driver”/)
      (property name=“url” value=“jdbc:mysql:///yonghedb?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false”/)
      (property name=“username” value=“root”/) (property name=“password” value=“root”/)
      (/dataSource) (/environment) --)
      (/environments)
      (!-- 导入mapper.xml文件(书写sql语句的文件) --)
      (mappers)
      (!-- 直接到类目录下更具填写的路径寻找指定的文件 --)
      (mapper resource=“EmpMapper.xml”/)
      (/mappers)
      (/configuration)

    • 2.3 Test.java
      static { //静态块,类加载的时候先执行一下,读取配置文件
      try {
      //1.读取mybatis核心配置文件(mybatis-config.xml)
      InputStream in = Resources.getResourceAsStream(“mybatis-config.xml”);
      //2.获取SqlSessionFactory工厂对象
      SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(in);
      //3.获取SqlSession对象(打开了与数据库的连接)
      session = fac.openSession();
      }catch(Exception e){
      e.printStackTrace();
      }
      }

//占位符
/*
* #{变量}:相当于JDBC中的?占位符
* JDBC:insert int emp values(null,?,?,?)
* Mybatis:insert int emp values(null,#{变量},#{变量},#{变量}) //为值占位
* ${变量}:为SQL语句中的语句片段占位
* select ,name,job,{变量},name,job,{变量} from emp
*/

查询:List(Emp) list = session.selectList(“EmpMapper.findAll”);
Emp emp = session.selectOne(“EmpMapper.findid”,id);//查询一条信息
//select * from emp where id=#{id}
List(Emp) List = session.selectList(“EmpMapper.findAll2”,map);
//select ${cols} from emp ${}只有一个参数也要封装

模糊查询:map.put(“name”, “%海%”); //或者"海"
List(Emp) List = session.selectList(“EmpMapper.findAllbyname”,map); (!-- KaTeX parse error: Expected 'EOF', got '#' at position 9: {}是直接拼接 #̲会转义 --) //s…{name}%’
更新:int i=session.update(“EmpMapper.insert2”,map);//插入的信息封装到map中
//insert into emp value(null,#{name},#{job},#{salary}) //name job等分别对应map中的key,而map中的value则是需要插入的值
更新操作执行完之后记得提交事务:session.commit();//提交事务

删除:session.delete(“EmpMapper.delete”, i);//i要用包装类
//delete from emp where id=#{id}

发布了9 篇原创文章 · 获赞 8 · 访问量 862
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览