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 ...
随机推荐
- js原生轮播
js原生轮播 今天用js做了轮播图,做的不怎么好,希望大家能够看懂. 效果: 1.鼠标放在轮播图上自动停止 2.鼠标离开轮播图自动播放 3.鼠标点击轮播图上的小圆点跳转到相应的图上. 代码: < ...
- Linux 虚拟机VMware安装失败,提示没有选择磁盘
提示安装位置:没有选择磁盘 磁盘类型问题. 在新建虚拟机向导时会推荐选项 重新安装就有磁盘了
- Object-c基本语法
// // main.m // OCbasic1 // // Created by apple on 14-8-5. // Copyright (c) 2014年 苹果IOS软件开发者. Al ...
- 2.3在LeetCode中使用我们自定义的类
在上一节中我们使用的是java提供了的类,这一小节中我们就来学习一下如何在LeetCode中使用我们自定义的类. 其实很简单,我们只需把我们编写的自定义类,拷贝到LeetCode提供的类中,形成类中类 ...
- MVC基于角色权限控制--菜单展示
在用户成功登陆后台页面后,我们需要将当前用户拥有的权限通过菜单的形式展现出来,将未具备的权限隐藏 新建一个HomeController,用于展示后台首页和获取用户权限数据 namespace CZBK ...
- 一次ssh远程不能登录的排查
原创文件,欢迎阅读,禁止转载. 今天发现一台主机不能远程了,ssh连接不上了. 排查过程是这样的:1. ping没问题. 2. 通过telnet看端口是否开启.[user@localhost ~]$ ...
- 根据svm将视频帧转换为img
# -*- coding: utf-8 -*- """ Created on Mon Oct 1 09:32:37 2018 @author: Manuel " ...
- BBS--功能4:个人站点页面设计(ORM跨表与分组查询)
查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...
- ORM对单表的增删改查
表记录的增加: 1)b = Book(name='python', price=99) b.save() 2)Book.objects.create(name='python', price=99) ...
- Rocket MQ 问题排查命令
修改rocketmq官方代码测试: package com.alibaba.middleware.race.rocketmq; import java.util.Scanner; import com ...