• 05_ssm基础(二)之mybatis优化


    06.mybatis优化之Mybatis工具类提取

      优化原则(见官方文档):

      

         mybatis工具类存放位置:

        

        mybatis工具类代码:

     1 package com.day01.ssm.mybatisDemo.utils;
     2 
     3 import org.apache.ibatis.io.Resources;
     4 import org.apache.ibatis.session.SqlSession;
     5 import org.apache.ibatis.session.SqlSessionFactory;
     6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     7 
     8 import java.io.IOException;
     9 import java.io.Reader;
    10 
    11 /**
    12  * 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
    13  * 疑问咨询wx:851298348
    14  */
    15 public class MybatisUtil {
    16     private static SqlSessionFactory sqlSessionFactory=null;
    17     /**
    18      * 静态代码块: 特点 无论多少的对象只执行一次
    19      */
    20    static  {
    21 
    22         try {
    23             //指定mybatis主配置文件地址
    24             String resource = "myBatis-config.xml";
    25             //读取配置文件内容
    26             Reader reader = Resources.getResourceAsReader(resource);
    27             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
    28             sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    29             System.out.println("创建sqlSessionFactory完毕!");
    30 
    31         } catch (IOException e) {
    32             e.printStackTrace();
    33         }
    34     }
    35     /**
    36      * 获取SqlSessionFactory
    37      * @return
    38      */
    39     /**
    40      * 被static 修饰后的方法,多了一种访问方式  可以用  类名.方法名
    41      * @return
    42      */
    43     public static SqlSessionFactory getSqlSessionFactory(){
    44         return sqlSessionFactory;
    45     }
    46 
    47     public static SqlSession getSqlSession(){
    48         SqlSession session = sqlSessionFactory.openSession();
    49         return session;
    50     }
    51 }
    MybatisUtil

         代码中使用

      1 package com.day01.ssm.mybatisDemo.dao.impl;
      2 
      3 import com.day01.ssm.mybatisDemo.dao.ITicketDao;
      4 import com.day01.ssm.mybatisDemo.model.Ticket;
      5 import com.day01.ssm.mybatisDemo.utils.MybatisUtil;
      6 import org.apache.ibatis.session.SqlSession;
      7 
      8 import java.util.List;
      9 
     10 /**
     11  * 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
     12  * 疑问咨询wx:851298348
     13  */
     14 
     15 /**
     16  * 使用mybatis完成CRUD
     17  */
     18 public class TicketDao implements ITicketDao {
     19     @Override
     20     public void save(Ticket ticket) {
     21         //以前  加 链 预  执 释
     22         //现在  mybatis
     23         try {
     24            /* //指定mybatis主配置文件地址
     25             String resource = "myBatis-config.xml";
     26             //读取配置文件内容
     27             Reader  reader = Resources.getResourceAsReader(resource);
     28             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
     29             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
     30             // MybatisUtil mybatisUtil = new MybatisUtil();
     31 
     32             // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
     33 
     34             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
     35             //  SqlSession sqlSession = sqlSessionFactory.openSession();
     36 
     37             SqlSession sqlSession = MybatisUtil.getSqlSession();
     38 
     39             //开启事物
     40             sqlSession.insert("org.mybatis.example.BlogMapper.tt", ticket);
     41             //提交事物
     42             sqlSession.commit();
     43             sqlSession.close();
     44 
     45         } catch (Exception e) {
     46             e.printStackTrace();
     47         }
     48 
     49 
     50     }
     51 
     52     @Override
     53     public void deleteById(Integer id) {
     54         //以前  加 链 预  执 释
     55         //现在  mybatis
     56         try {
     57           /*  //指定mybatis主配置文件地址
     58             String resource = "myBatis-config.xml";
     59             //读取配置文件内容
     60             Reader  reader = Resources.getResourceAsReader(resource);
     61             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
     62             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
     63             //  MybatisUtil mybatisUtil = new MybatisUtil();
     64 
     65             //  SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
     66             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
     67             //  SqlSession sqlSession = sqlSessionFactory.openSession();
     68 
     69             SqlSession sqlSession = MybatisUtil.getSqlSession();
     70             //开启事物
     71             sqlSession.delete("org.mybatis.example.BlogMapper.dd", id);
     72             //提交事物
     73             sqlSession.commit();
     74             sqlSession.close();
     75 
     76         } catch (Exception e) {
     77             e.printStackTrace();
     78         }
     79 
     80     }
     81 
     82     @Override
     83     public void update(Ticket ticket) {
     84 
     85         //以前  加 链 预  执 释
     86         //现在  mybatis
     87         try {
     88            /* //指定mybatis主配置文件地址
     89             String resource = "myBatis-config.xml";
     90             //读取配置文件内容
     91             Reader  reader = Resources.getResourceAsReader(resource);
     92             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
     93             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
     94 
     95             //  MybatisUtil mybatisUtil = new MybatisUtil();
     96 
     97             //  SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
     98             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
     99             // SqlSession sqlSession = sqlSessionFactory.openSession();
    100 
    101             SqlSession sqlSession = MybatisUtil.getSqlSession();
    102 
    103             sqlSession.update("org.mybatis.example.BlogMapper.uu", ticket);
    104             //提交事物
    105             sqlSession.commit();
    106             sqlSession.close();
    107 
    108         } catch (Exception e) {
    109             e.printStackTrace();
    110         }
    111     }
    112 
    113     @Override
    114     public Ticket queryById(Integer id) {
    115         try {
    116            /* //指定mybatis主配置文件地址
    117             String resource = "myBatis-config.xml";
    118             //读取配置文件内容
    119             Reader  reader = Resources.getResourceAsReader(resource);
    120             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
    121             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
    122 
    123             // MybatisUtil mybatisUtil = new MybatisUtil();
    124 
    125             // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
    126             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
    127             // SqlSession sqlSession = sqlSessionFactory.openSession();
    128             SqlSession sqlSession = MybatisUtil.getSqlSession();
    129             //sqlSession 中完成对数据的增删改查和事务提交等
    130             Ticket ticket = (Ticket) sqlSession.selectOne("org.mybatis.example.BlogMapper.yy", id);
    131             sqlSession.close();
    132             return ticket;
    133         } catch (Exception e) {
    134             e.printStackTrace();
    135         }
    136         return null;
    137     }
    138 
    139     @Override
    140     public List<Ticket> queryAll() {
    141 
    142         try {
    143             //指定mybatis主配置文件地址
    144            /* String resource = "myBatis-config.xml";
    145             //读取配置文件内容
    146             Reader  reader = Resources.getResourceAsReader(resource);
    147             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
    148             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
    149 
    150             //  MybatisUtil mybatisUtil = new MybatisUtil();
    151 
    152             //  SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
    153             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
    154             // SqlSession sqlSession = sqlSessionFactory.openSession();
    155 
    156             SqlSession sqlSession = MybatisUtil.getSqlSession();
    157             //sqlSession 中完成对数据的增删改查和事务提交等
    158             List<Ticket> list = sqlSession.selectList("org.mybatis.example.BlogMapper.ss");
    159             sqlSession.close();
    160             return list;
    161         } catch (Exception e) {
    162             e.printStackTrace();
    163         }
    164         return null;
    165     }
    166 
    167 
    168 }
    TicketDao

         测试代码

     1  @Test
     2     public void testCRUD(){
     3         Ticket ticket = ticketDao.queryById(2);
     4         System.out.println("ticket="+ticket);
     5 
     6         Ticket ticket2 = new Ticket();
     7         ticket.setStartStation("上海");
     8         ticket.setStopStation("北京");
     9         ticketDao.save(ticket2);
    10 
    11         ticketDao.deleteById(6);
    12 
    13         Ticket ticket3 = new Ticket();
    14         ticket3.setId(2);
    15         ticket3.setStartStation("北京-改");
    16         ticket3.setStopStation("成都");
    17         ticketDao.update(ticket3);
    18 
    19 
    20         List<Ticket> tickets = ticketDao.queryAll();
    21         System.out.println(" tickets= "+tickets);
    22     }
    View Code

    07.mybatis优化之硬编码优化      

      1.准备db.properties文件

     1 #驱动
     2 mysql.driverClass=com.mysql.jdbc.Driver
     3 
     4 #数据库
     5 mysql.JdbcUrl=jdbc:mysql://localhost:3306/station_data
     6 
     7 #用户名
     8 mysql.User=root
     9 
    10 #密码
    11 mysql.Password=admin
    View Code

       2.mybatis主配置文件中使用

     08.mybatis优化之别名配置(生产上一般不配置别名)

      配置位置:

      

      使用:

      

     09.列名与属性名称不一致的两种解决方案

      

    10.获取自动生成的主键

      官方文档显示:

      

        在映射文件中配置与获取主键方式:

      

      mybatis第一阶段就暂时讲到这里,其他的在项目中讲解!

  • 相关阅读:
    通过JDBC方式连接ClickHouse
    Spring Boot FAQ
    参数类型与参数不匹配(datetime)
    FastAPI中解决docs路径不能访问的问题,需要替换swaggerui的cdn连接
    DataGrid使用
    es 添加自定义词库
    mxGraph学习笔记设置节点鼠标事件 //创建显示流程图的画布
    压力表刻度图片识别
    token的基本使用
    nginx中使用gzip
  • 原文地址:https://www.cnblogs.com/newAndHui/p/9045176.html
Copyright © 2020-2023  润新知