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 ...
随机推荐
- 使用Git将项目上传到GitHub管理
首先你需要一个github账号.https://github.com/ 我们使用git需要先安装git工具. 1.进入Github首页,点击New repository新建一个项目 2.填写相应信息后 ...
- android TextView 例子代码(文字图片、文字省略、文字滚动)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 将控制台信息重新导向到JTextArea
package com.function; import java.io.FileOutputStream; import java.io.IOException; import java.io.Ou ...
- django, tornado
django 由多线程写的 tornaod 由epoll机制
- JAVA 中文 unicode 相互转换 文件读取
package com.test; import org.junit.Test; public class JunitTest { @Test public void test(){ String p ...
- a.每个 HTML 文件里开头都有个<!DOCTYPE>
<!DOCTYPE> 位于文档中最前面的位置,告诉浏览器以哪个HTML版本进行解析. 在 HTML5 中只有一种:<!DOCTYPE html> .
- apache 重点难点
apache 重点难点 在于难以理解其工作原理,因为它是c 写的:其模块众多:功能强大而复杂. 其配置也是格式不齐, 比如一下子是 key value , 一下子就成了 xml. 转载: http:/ ...
- .Net 上传文件和下载文件
一.上传文件 1.普通的form表单提交 注意点: 请求方式必须为Post. form表单里必须设置enctype属性(enctype = "multipart/form-data" ...
- Mapperreduce的wordCount原理
wordcount原理: 1.mapper(Object key,Object value ,Context contex)阶段 2.从数据源读取一行数据传递给mapper函数的value 3.处理数 ...
- Oracle修改表或者字段的注释
转自:https://www.cnblogs.com/fx-blog/p/7132833.html 语句:comment on table 表名 is '表的注释信息'; comment on col ...