首页 > 数据库技术 > 详细

一张图带你看懂原始dao与SQL动态代理开发的区别-Mybatis

时间:2019-07-09 12:24:52      阅读:136      评论:0      收藏:0      [点我收藏+]

//转载请注明出处:https://www.cnblogs.com/nreg/p/11156167.html

1.项目结构区别:

技术分享图片

2.开发区别:一张图带你看懂原始dao与SQL动态代理开发的区别

技术分享图片

注:其中原始dao开发的实现类UserDaoImpl 与动态代理开发的工具类UserService的第16行-第27行代码可以提炼出来,

       每个逻辑方法里都要注入这6行代码,会有些繁琐,因此需要提炼出来作为一个工厂类,对外提供Sqlsession会话。

3.工厂类:Factory

 1 public class Factory {
 2     private final static Class<Factory> lock = Factory.class;
 3     private static SqlSessionFactory sqlSessionFactory = null;
 4     private Factory() {}
 5 
 6     public static SqlSessionFactory getSqlSessionFactory() {
 7         synchronized (lock) {
 8             if (sqlSessionFactory != null) {
 9                 return sqlSessionFactory;
10             }
11             //加载核心配置文件
12             String resource = "mybatis-config.xml";
13             InputStream inputStream;
14             try {
15                 inputStream = Resources.getResourceAsStream(resource);
16                 //创建SqlsessionFactory工厂
17                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
18             } catch (IOException e) {
19                 e.printStackTrace();
20                 return null;
21             }
22             //对外提供一个工厂
23             return sqlSessionFactory;
24         }
25     }
26 
27     //对外提供一个Sqlsession会话
28     public static SqlSession getSession() {
29         if (sqlSessionFactory == null) {
30             getSqlSessionFactory();
31         }
32         return sqlSessionFactory.openSession();
33     }
34 }

工厂类使用示例:

技术分享图片

4.Mybatis的核心配置文件:mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <properties resource="jdbc.properties"></properties>

    <!--environments元素:配置Mybatis的运行环境-->
    <!--可配置多套运行环境,将SQL映射到多个不同的数据库上,但必须通过default属性指定默认运行环境-->
    <environments default="development"> <!--default属性指定默认运行环境的id-->
        <environment id="development">   <!-- 第一套运行环境的id-->
            <transactionManager type="JDBC"></transactionManager> <!--事务管理器配置-->
            <dataSource type="POOLED">   <!--数据源(连接池)配置-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--mappers元素:配置mapper映射器的xml映射文件 以动态代理开发为例,原始dao开发配置方法相同-->
    <mappers>
        <!--方式一:使用resource配置映射文件-->
        <mapper resource="com/nreg/mapper/UserMapper.xml"></mapper>
        <!--方式二:使用url配置映射文件-->
        <mapper url="D:\Mybatis-agency-easy\src\main\java\com\nreg\mapper\UserMapper.xml"></mapper>
        <!--方式三:多个映射器的使用:开启扫描-->
        <package name="com.nreg.mapper"/>
    </mappers>
</configuration>

5.外部属性文件:jdbc

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/crud?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

6.日志文件:log4j

### 设置Logger输出级别和输出目的地 ### debug更详细,如果把debug改为info,则打印出的表数据遇到字符串就不显示,此外还有log4j.log文件
log4j.rootLogger=debug,stdout
        
### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout 

### 把日志信息输出到文件:log4j.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender 
log4j.appender.logfile.File=log4j.log 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n

###显示SQL语句部分 ###
#第一行:xml映射文件所在包
log4j.logger.com.nreg.sqlMap=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

结。

一张图带你看懂原始dao与SQL动态代理开发的区别-Mybatis

原文:https://www.cnblogs.com/nreg/p/11156167.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!