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 ...
随机推荐
- Angularjs中的Controller
概念:一个应用(APP,本身也是一个大模块)是由若干个模块(module)组成的,每个模块实现一个功能.利于代码的复用. 书写格式: <!DOCTYPE html> <html ng ...
- ASP.NET WebApi 图片上传
以下是代码的实现过程: Html页面表单布局: <form id="UpPicture" enctype="multipart/form-data" ac ...
- Java序列化对象-字符串转换
package com.test; import com.alibaba.fastjson.JSON; import org.junit.Test; import java.io.ByteArrayI ...
- JAVA操作字符串
package com.test; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /* ...
- django之def get_response(self, request):
class BaseHandler(object)方法get_response,控制着处理请求的流程,调用中间件,返回请求. def get_response(self, request): &quo ...
- Redis 发布与订阅模式
subscribe 订阅 publish 发布 频道 发布内容
- Navicat for MySQL 安装和破解(完美)
Navicat for MySQL 安装软件和破解补丁: 链接:https://pan.baidu.com/s/1oKcErok_Ijm0CY9UjNMrnA 密码:4xb1 navicat fo ...
- IUSER 匿名帐户密码获取
如何获取IUSR帐号和密码呢?有两种方法 1.安装IIS Resources,打开IIS Resources中的Metabase Explorer->机器名->LM->W3SVC-& ...
- svn下载地址
SVN svn服务器端下载: https://www.visualsvn.com/server/download/ svn eclipse插件地址(new soft install): http:// ...
- flash推流工具<转>
https://github.com/young-cowboy/young-cowboy.github.io https://www.cnblogs.com/xiaoniuzai/p/7129036. ...