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

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

  

    mybatis工具类存放位置:

    

    mybatis工具类代码:

 package com.day01.ssm.mybatisDemo.utils;

 import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException;
import java.io.Reader; /**
* 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
* 疑问咨询wx:851298348
*/
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory=null;
/**
* 静态代码块: 特点 无论多少的对象只执行一次
*/
static { try {
//指定mybatis主配置文件地址
String resource = "myBatis-config.xml";
//读取配置文件内容
Reader reader = Resources.getResourceAsReader(resource);
//从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
System.out.println("创建sqlSessionFactory完毕!"); } catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSessionFactory
* @return
*/
/**
* 被static 修饰后的方法,多了一种访问方式 可以用 类名.方法名
* @return
*/
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
} public static SqlSession getSqlSession(){
SqlSession session = sqlSessionFactory.openSession();
return session;
}
}

MybatisUtil

    代码中使用

 package com.day01.ssm.mybatisDemo.dao.impl;

 import com.day01.ssm.mybatisDemo.dao.ITicketDao;
import com.day01.ssm.mybatisDemo.model.Ticket;
import com.day01.ssm.mybatisDemo.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession; import java.util.List; /**
* 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
* 疑问咨询wx:851298348
*/ /**
* 使用mybatis完成CRUD
*/
public class TicketDao implements ITicketDao {
@Override
public void save(Ticket ticket) {
//以前 加 链 预 执 释
//现在 mybatis
try {
/* //指定mybatis主配置文件地址
String resource = "myBatis-config.xml";
//读取配置文件内容
Reader reader = Resources.getResourceAsReader(resource);
//从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
// MybatisUtil mybatisUtil = new MybatisUtil(); // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory(); // 由sqlSessionfactory 产生 sqlSession(相当于Connection)。
// SqlSession sqlSession = sqlSessionFactory.openSession(); SqlSession sqlSession = MybatisUtil.getSqlSession(); //开启事物
sqlSession.insert("org.mybatis.example.BlogMapper.tt", ticket);
//提交事物
sqlSession.commit();
sqlSession.close(); } catch (Exception e) {
e.printStackTrace();
} } @Override
public void deleteById(Integer id) {
//以前 加 链 预 执 释
//现在 mybatis
try {
/* //指定mybatis主配置文件地址
String resource = "myBatis-config.xml";
//读取配置文件内容
Reader reader = Resources.getResourceAsReader(resource);
//从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
// MybatisUtil mybatisUtil = new MybatisUtil(); // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
// 由sqlSessionfactory 产生 sqlSession(相当于Connection)。
// SqlSession sqlSession = sqlSessionFactory.openSession(); SqlSession sqlSession = MybatisUtil.getSqlSession();
//开启事物
sqlSession.delete("org.mybatis.example.BlogMapper.dd", id);
//提交事物
sqlSession.commit();
sqlSession.close(); } catch (Exception e) {
e.printStackTrace();
} } @Override
public void update(Ticket ticket) { //以前 加 链 预 执 释
//现在 mybatis
try {
/* //指定mybatis主配置文件地址
String resource = "myBatis-config.xml";
//读取配置文件内容
Reader reader = Resources.getResourceAsReader(resource);
//从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/ // MybatisUtil mybatisUtil = new MybatisUtil(); // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
// 由sqlSessionfactory 产生 sqlSession(相当于Connection)。
// SqlSession sqlSession = sqlSessionFactory.openSession(); SqlSession sqlSession = MybatisUtil.getSqlSession(); sqlSession.update("org.mybatis.example.BlogMapper.uu", ticket);
//提交事物
sqlSession.commit();
sqlSession.close(); } catch (Exception e) {
e.printStackTrace();
}
} @Override
public Ticket queryById(Integer id) {
try {
/* //指定mybatis主配置文件地址
String resource = "myBatis-config.xml";
//读取配置文件内容
Reader reader = Resources.getResourceAsReader(resource);
//从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/ // MybatisUtil mybatisUtil = new MybatisUtil(); // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
// 由sqlSessionfactory 产生 sqlSession(相当于Connection)。
// SqlSession sqlSession = sqlSessionFactory.openSession();
SqlSession sqlSession = MybatisUtil.getSqlSession();
//sqlSession 中完成对数据的增删改查和事务提交等
Ticket ticket = (Ticket) sqlSession.selectOne("org.mybatis.example.BlogMapper.yy", id);
sqlSession.close();
return ticket;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} @Override
public List<Ticket> queryAll() { try {
//指定mybatis主配置文件地址
/* String resource = "myBatis-config.xml";
//读取配置文件内容
Reader reader = Resources.getResourceAsReader(resource);
//从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/ // MybatisUtil mybatisUtil = new MybatisUtil(); // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
// 由sqlSessionfactory 产生 sqlSession(相当于Connection)。
// SqlSession sqlSession = sqlSessionFactory.openSession(); SqlSession sqlSession = MybatisUtil.getSqlSession();
//sqlSession 中完成对数据的增删改查和事务提交等
List<Ticket> list = sqlSession.selectList("org.mybatis.example.BlogMapper.ss");
sqlSession.close();
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} }

TicketDao

    测试代码

  @Test
public void testCRUD(){
Ticket ticket = ticketDao.queryById(2);
System.out.println("ticket="+ticket); Ticket ticket2 = new Ticket();
ticket.setStartStation("上海");
ticket.setStopStation("北京");
ticketDao.save(ticket2); ticketDao.deleteById(6); Ticket ticket3 = new Ticket();
ticket3.setId(2);
ticket3.setStartStation("北京-改");
ticket3.setStopStation("成都");
ticketDao.update(ticket3); List<Ticket> tickets = ticketDao.queryAll();
System.out.println(" tickets= "+tickets);
}

07.mybatis优化之硬编码优化

  1.准备db.properties文件

 #驱动
mysql.driverClass=com.mysql.jdbc.Driver #数据库
mysql.JdbcUrl=jdbc:mysql://localhost:3306/station_data #用户名
mysql.User=root #密码
mysql.Password=admin

  2.mybatis主配置文件中使用

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

  配置位置:

  

  使用:

  

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

  

10.获取自动生成的主键

  官方文档显示:

  

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

  

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

05_ssm基础(二)之mybatis优化的更多相关文章

  1. 05_ssm基础(一)之mybatis简单使用

    01.mybatis使用引导与准备 1.ssm框架 指: sping+springMVC+mybatis 2.学习mybatis前准备web标准项目结构 model中的Ticket代码如下: pack ...

  2. MySQL优化二(连接优化和缓存优化)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  3. Android学习总结(十二)———— BaseAdapter优化

    一.BaseAdapter的基本概念 对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到L ...

  4. Java基础-SSM之mybatis一对一关联

    Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbands和wifes表并建 ...

  5. Java基础-SSM之mybatis多对多关联

    Java基础-SSM之mybatis多对多关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建teas,stus,links表 u ...

  6. Java基础-SSM之mybatis一对多和多对一关系映射

    Java基础-SSM之mybatis一对多和多对一关系映射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建customers表: ...

  7. Java基础-SSM之mybatis的树形控件(自关联)

    Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...

  8. Java基础-SSM之mybatis一对一外键关联

    Java基础-SSM之mybatis一对一外键关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbandsfk和wife ...

  9. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

随机推荐

  1. BZOJ2054 疯狂的馒头 并查集

    题意:懒得写了有空再补上 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2054 离线从后往前做,并查集维护下一个没染色的就可以啦- #incl ...

  2. 制作本地yum源

    镜像源是centos当中下载相关软件的地址,我们可以通过制作我们自己的镜像源指定我们去哪里下载impala的rpm包,这里我们使用httpd这个软件来作为服务端,启动httpd的服务来作为我们镜像源的 ...

  3. 寻找cost函数最小值:梯度下降与最小二乘法

    Editted by MarkDown 寻找cost函数最小值:梯度下降与最小二乘法 参考:最小二乘法小结--刘建平 背景: 目标函数 = Σ(观测值-理论值)2 观测值就是我们的多组样本,理论值就是 ...

  4. CMD下的netstat命令

    查询端口启用情况 netstat -ano|findstr 80

  5. python学习笔记_week5_模块

    模块 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应模块名:test) 包:用来从逻辑上 ...

  6. [C基础修炼] [C课程设计]C语言课程设计之图书管理系统

    #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp;//定义文件指针fp,指向文 ...

  7. C# IIS 服务器上传图片500解决办法

  8. 来分析一个UVC的摄像头的枚举信息

    使用到工具USBlyzer导出数据,但是会发现一些还有部分解析未完全.我们将借助UVCView.x86(https://files.cnblogs.com/files/libra13179/77772 ...

  9. golang redis集群操作:redis-go-cluster

    背景 感觉redis-cli desktop及其难用,最近用golang做了个redis查询工具,支持单例和集群操作,终于不再卡顿!!! 用到的包 "github.com/garyburd/ ...

  10. 机器学习进阶-案例实战-图像全景拼接-书籍SIFT特征点连接 1.cv2.drawMatches(对两个图像的关键点进行连线操作)

    1.cv2.drawMatches(imageA, kpsA, imageB, kpsB, matches[:10], None, flags=2)  # 对两个图像关键点进行连线操作 参数说明:im ...