05_ssm基础(二)之mybatis优化
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优化的更多相关文章
- 05_ssm基础(一)之mybatis简单使用
01.mybatis使用引导与准备 1.ssm框架 指: sping+springMVC+mybatis 2.学习mybatis前准备web标准项目结构 model中的Ticket代码如下: pack ...
- MySQL优化二(连接优化和缓存优化)
body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...
- Android学习总结(十二)———— BaseAdapter优化
一.BaseAdapter的基本概念 对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到L ...
- Java基础-SSM之mybatis一对一关联
Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbands和wifes表并建 ...
- Java基础-SSM之mybatis多对多关联
Java基础-SSM之mybatis多对多关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建teas,stus,links表 u ...
- Java基础-SSM之mybatis一对多和多对一关系映射
Java基础-SSM之mybatis一对多和多对一关系映射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建customers表: ...
- Java基础-SSM之mybatis的树形控件(自关联)
Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...
- Java基础-SSM之mybatis一对一外键关联
Java基础-SSM之mybatis一对一外键关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbandsfk和wife ...
- Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置
0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...
随机推荐
- 利用Python实现FGO自动战斗脚本,再也不用爆肝啦~
Fate/Grand Order(非的肝不过欧的)作为索尼为了拯救自己不倒闭而开发的面向月厨的骗氪养成抽卡爆肝游戏,居然没有像隔壁<阴阳师>的自动战斗系统(看看别人现在都自带脚本了).毕竟 ...
- Postman用法,了解一下
一.Postman的基础功能 二.接口请求流程 1. GET 请求 GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上, 所以,GET请求的请求头与请求参数如在接口 ...
- 关于oracle中varchar2与nvarchar2的一点认识
今天在oracle 10g下测试了下varchar2与nvarchar2这两种类型,网上有很多关于这两种类型的区别的帖子,我还是自己测试了下. varchar2(size type),size最大为4 ...
- Python-1 试玩OpenCV
昨天同事说微信更新有跳一跳小游戏,便更新了玩一玩.至于抄袭不抄袭我不讨论,看玩法和色彩都很简洁.想用Python试试摄像头捕捉图像,然后分析距离每次都能跳到中心,有生物机械手指之类的再弄到树莓派上岂不 ...
- fabric镜像安装脚本分析
#!/bin/bash # # Copyright IBM Corp. All Rights Reserved. # # SPDX-License-Identifier: Apache-2.0 # e ...
- 笔记:Sublime Text 3
http://www.sublimetext.com/3 Sublime Text官网 http://www.sublimetextcn.com/3/ Sublime Text中文官网 http:// ...
- hive grouping sets 实现原理
先下结论: 看了hive 1.1.0 grouping sets 实现(从源码及执行计划都可以看出与kylin实现不一样),(前提是可累加,如sum函数)他并没有像kylin一样先按照group by ...
- hdfs fsimage namenode 应该设置多少堆内存合适
线上的fsimage 有1.8G左右了,设置了6G heap 不够用了 新生代:老年代=1:2=2G: 4G NameNode的内存主要由NameSpace和BlocksMap占用,其中NameSpa ...
- Android 组合控件
前言 自定义组合控件就是多个控件组合起来成为一个新的控件,主要用来解决多次重复的使用同一类型的布局.比如我们应用的顶部的标题栏,还有弹出的固定样式的dialog,这些都是常用的,所以把他们所需要的控件 ...
- leetcode987
public class Solution { private Dictionary<int, List<KeyValuePair<int,int>>> dic = ...