05_ssm基础(二)之mybatis优化

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

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

  

     mybatis工具类存放位置:

    

    mybatis工具类代码:

 1 package com.day01.ssm.mybatisDemo.utils;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.Reader;
10 
11 /**
12  * 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
13  * 疑问咨询wx:851298348
14  */
15 public class MybatisUtil {
16     private static SqlSessionFactory sqlSessionFactory=null;
17     /**
18      * 静态代码块: 特点 无论多少的对象只执行一次
19      */
20    static  {
21 
22         try {
23             //指定mybatis主配置文件地址
24             String resource = "myBatis-config.xml";
25             //读取配置文件内容
26             Reader reader = Resources.getResourceAsReader(resource);
27             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
28             sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
29             System.out.println("创建sqlSessionFactory完毕!");
30 
31         } catch (IOException e) {
32             e.printStackTrace();
33         }
34     }
35     /**
36      * 获取SqlSessionFactory
37      * @return
38      */
39     /**
40      * 被static 修饰后的方法,多了一种访问方式  可以用  类名.方法名
41      * @return
42      */
43     public static SqlSessionFactory getSqlSessionFactory(){
44         return sqlSessionFactory;
45     }
46 
47     public static SqlSession getSqlSession(){
48         SqlSession session = sqlSessionFactory.openSession();
49         return session;
50     }
51 }
MybatisUtil

 

     代码中使用

  1 package com.day01.ssm.mybatisDemo.dao.impl;
  2 
  3 import com.day01.ssm.mybatisDemo.dao.ITicketDao;
  4 import com.day01.ssm.mybatisDemo.model.Ticket;
  5 import com.day01.ssm.mybatisDemo.utils.MybatisUtil;
  6 import org.apache.ibatis.session.SqlSession;
  7 
  8 import java.util.List;
  9 
 10 /**
 11  * 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
 12  * 疑问咨询wx:851298348
 13  */
 14 
 15 /**
 16  * 使用mybatis完成CRUD
 17  */
 18 public class TicketDao implements ITicketDao {
 19     @Override
 20     public void save(Ticket ticket) {
 21         //以前  加 链 预  执 释
 22         //现在  mybatis
 23         try {
 24            /* //指定mybatis主配置文件地址
 25             String resource = "myBatis-config.xml";
 26             //读取配置文件内容
 27             Reader  reader = Resources.getResourceAsReader(resource);
 28             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
 29             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
 30             // MybatisUtil mybatisUtil = new MybatisUtil();
 31 
 32             // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
 33 
 34             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
 35             //  SqlSession sqlSession = sqlSessionFactory.openSession();
 36 
 37             SqlSession sqlSession = MybatisUtil.getSqlSession();
 38 
 39             //开启事物
 40             sqlSession.insert("org.mybatis.example.BlogMapper.tt", ticket);
 41             //提交事物
 42             sqlSession.commit();
 43             sqlSession.close();
 44 
 45         } catch (Exception e) {
 46             e.printStackTrace();
 47         }
 48 
 49 
 50     }
 51 
 52     @Override
 53     public void deleteById(Integer id) {
 54         //以前  加 链 预  执 释
 55         //现在  mybatis
 56         try {
 57           /*  //指定mybatis主配置文件地址
 58             String resource = "myBatis-config.xml";
 59             //读取配置文件内容
 60             Reader  reader = Resources.getResourceAsReader(resource);
 61             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
 62             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
 63             //  MybatisUtil mybatisUtil = new MybatisUtil();
 64 
 65             //  SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
 66             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
 67             //  SqlSession sqlSession = sqlSessionFactory.openSession();
 68 
 69             SqlSession sqlSession = MybatisUtil.getSqlSession();
 70             //开启事物
 71             sqlSession.delete("org.mybatis.example.BlogMapper.dd", id);
 72             //提交事物
 73             sqlSession.commit();
 74             sqlSession.close();
 75 
 76         } catch (Exception e) {
 77             e.printStackTrace();
 78         }
 79 
 80     }
 81 
 82     @Override
 83     public void update(Ticket ticket) {
 84 
 85         //以前  加 链 预  执 释
 86         //现在  mybatis
 87         try {
 88            /* //指定mybatis主配置文件地址
 89             String resource = "myBatis-config.xml";
 90             //读取配置文件内容
 91             Reader  reader = Resources.getResourceAsReader(resource);
 92             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
 93             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
 94 
 95             //  MybatisUtil mybatisUtil = new MybatisUtil();
 96 
 97             //  SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
 98             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
 99             // SqlSession sqlSession = sqlSessionFactory.openSession();
100 
101             SqlSession sqlSession = MybatisUtil.getSqlSession();
102 
103             sqlSession.update("org.mybatis.example.BlogMapper.uu", ticket);
104             //提交事物
105             sqlSession.commit();
106             sqlSession.close();
107 
108         } catch (Exception e) {
109             e.printStackTrace();
110         }
111     }
112 
113     @Override
114     public Ticket queryById(Integer id) {
115         try {
116            /* //指定mybatis主配置文件地址
117             String resource = "myBatis-config.xml";
118             //读取配置文件内容
119             Reader  reader = Resources.getResourceAsReader(resource);
120             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
121             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
122 
123             // MybatisUtil mybatisUtil = new MybatisUtil();
124 
125             // SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
126             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
127             // SqlSession sqlSession = sqlSessionFactory.openSession();
128             SqlSession sqlSession = MybatisUtil.getSqlSession();
129             //sqlSession 中完成对数据的增删改查和事务提交等
130             Ticket ticket = (Ticket) sqlSession.selectOne("org.mybatis.example.BlogMapper.yy", id);
131             sqlSession.close();
132             return ticket;
133         } catch (Exception e) {
134             e.printStackTrace();
135         }
136         return null;
137     }
138 
139     @Override
140     public List<Ticket> queryAll() {
141 
142         try {
143             //指定mybatis主配置文件地址
144            /* String resource = "myBatis-config.xml";
145             //读取配置文件内容
146             Reader  reader = Resources.getResourceAsReader(resource);
147             //从配置文件(通常是XML配置文件中)得到 sqlSessionfactory
148             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/
149 
150             //  MybatisUtil mybatisUtil = new MybatisUtil();
151 
152             //  SqlSessionFactory sqlSessionFactory =MybatisUtil.getSqlSessionFactory();
153             // 由sqlSessionfactory  产生 sqlSession(相当于Connection)。
154             // SqlSession sqlSession = sqlSessionFactory.openSession();
155 
156             SqlSession sqlSession = MybatisUtil.getSqlSession();
157             //sqlSession 中完成对数据的增删改查和事务提交等
158             List<Ticket> list = sqlSession.selectList("org.mybatis.example.BlogMapper.ss");
159             sqlSession.close();
160             return list;
161         } catch (Exception e) {
162             e.printStackTrace();
163         }
164         return null;
165     }
166 
167 
168 }
TicketDao

 

     测试代码

 1  @Test
 2     public void testCRUD(){
 3         Ticket ticket = ticketDao.queryById(2);
 4         System.out.println("ticket="+ticket);
 5 
 6         Ticket ticket2 = new Ticket();
 7         ticket.setStartStation("上海");
 8         ticket.setStopStation("北京");
 9         ticketDao.save(ticket2);
10 
11         ticketDao.deleteById(6);
12 
13         Ticket ticket3 = new Ticket();
14         ticket3.setId(2);
15         ticket3.setStartStation("北京-改");
16         ticket3.setStopStation("成都");
17         ticketDao.update(ticket3);
18 
19 
20         List<Ticket> tickets = ticketDao.queryAll();
21         System.out.println(" tickets= "+tickets);
22     }
View Code

 

07.mybatis优化之硬编码优化      

  1.准备db.properties文件

 1 #驱动
 2 mysql.driverClass=com.mysql.jdbc.Driver
 3 
 4 #数据库
 5 mysql.JdbcUrl=jdbc:mysql://localhost:3306/station_data
 6 
 7 #用户名
 8 mysql.User=root
 9 
10 #密码
11 mysql.Password=admin
View Code

 

   2.mybatis主配置文件中使用

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

  配置位置:

  

  使用:

  

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

  

10.获取自动生成的主键

  官方文档显示:

  

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

  

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

 

posted @ 2018-05-16 11:43  李东平|一线码农  阅读(460)  评论(3编辑  收藏  举报