• 框架图

    • SqlSessionFactoryBuilder

      • 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory
      • 将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSesssionFactoryBuilder
      • 在需要创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可
    • SqlSessionFactory
      • 通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)
      • 将来mybatis和spring整合后,使用单例模式管理SqlSessionFactory
    • SqlSession
      • 是一个面向(程序员)接口
      • SqlSession中提供了多操作数据库的方法,如:selectOne(返回单个对象)、selectList(返回单个或多个对象)
      • SqlSession是线程不安全的,在SqlSession实现类中除了有接口中的方法(操作数据库的方法),还有数据域属性
      • SqlSession最佳应用场合在方法体内,定义成局部变量使用。
  • 基础工程结构

  

  • 在db.properties的内容

    • # Create a file called log4j.properties as shown below and place it in your classpath:
      # 创建一个名为log4j.properties的文件,如下所示,并将其放在类路径中:
      # Global logging configuration
      # 在开发环境下日志级别要设置成DEBUG,生产环境设置成info或error
      log4j.rootLogger=DEBUG, stdout
      # MyBatis logging configuration...
      log4j.logger.org.mybatis.example.BlogMapper=TRACE
      # Console output...
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  • 在SqlMapConfig.xml的内容
    • <?xml version="1.0" encoding="UTF-8" ?>
      <!-- 配置XML文件包含MyBatis系统核心的设置,包括用于获取数据库连接实例的DataSource,
      以及用于确定如何确定事务范围和控制事务的TransactionManager。 -->
      <!-- 请注意验证XML文档所需的XML标头。 environment元素的主体包含事务管理和连接池的环境配置。
      mappers元素包含一个映射器列表 - 包含SQL代码和映射定义的XML文件和/或带注释的Java接口类。-->
      <!-- 与spring整合后environments配置将废除 -->
      <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      <environments default="development">
      <environment id="development">
      <!-- 使用jdbc事务管理,事务控制由mybatis -->
      <transactionManager type="JDBC"/>
      <!-- 数据库连接池,由mybatis管理 -->
      <dataSource type="POOLED">
      <property name="driver" value="com.mysql.jdbc.Driver"/>
      <property name="url" value="jdbc://mysql://localhost:3306/[数据库名]?characterEncoding=utf-8"/>
      <property name="username" value="[账号]"/>
      <property name="password" value="[密码]"/>
      </dataSource>
      </environment>
      </environments>
      <!-- 加载映射文件 -->
      <mappers>
      <mapper resource="sqlmap/User.xml"/>
      </mappers>
      </configuration>
  • 方法一

    • #db.properties
      #将数据库连接参数只配置在db.properties中(原因:方便对参数进行统一管理)
      jdbc.driver=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://localhost:3306/travelling_guideling?characterEncoding=utf-8
      jdbc.username=root
      jdbc.password=root <?xml version="1.0" encoding="UTF-8" ?>
      <!-- 配置XML文件包含MyBatis系统核心的设置,包括用于获取数据库连接实例的DataSource,
      以及用于确定如何确定事务范围和控制事务的TransactionManager。 -->
      <!-- 请注意验证XML文档所需的XML标头。 environment元素的主体包含事务管理和连接池的环境配置。
      mappers元素包含一个映射器列表 - 包含SQL代码和映射定义的XML文件和/或带注释的Java接口类。-->
      <!-- 与spring整合后environments配置将废除 -->
      <!--
      mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:
      properties(属性)、settings(全局配置参数)、typeAliases(类型别名)、typeHandlers(类型处理器)、
      objectFactory(对象工厂)、plugins(插件)、environments(环境集合属性对象)、environment(环境子属性对象)、
      transactionManager(事务管理)、dataSource(数据源)、mappers(映射器)
      -->
      <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      <properties resource="db.properties"></properties> <!-- 别名定义 -->
      <typeAliases>
      <!--
      针对单个别名定义
      type:类型的路径
      alias:别名
      -->
      <typeAlias type="cn.muriel.mybatis.po.User" alias="user"/>
      <!--
      批量别名定义
      指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大小写都可以)
      -->
      <!--<package name="cn.muriel.mybatis.po"/>-->
      </typeAliases>
      <environments default="development">
      <environment id="development">
      <!-- 使用jdbc事务管理,事务控制由mybatis -->
      <transactionManager type="JDBC"/>
      <!-- 数据库连接池,由mybatis管理 -->
      <dataSource type="POOLED">
      <!-- ${jdbc.driver}写成${jdbc.Driver},报错 -->
      <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>
      <!-- 通过resource方法一次加载一个映射文件 -->
      <mapper resource="mapper/UserMapper.xml"/>
      <mapper resource="sqlmap/User.xml"/>
      <!-- 使用完全限定路径加载 -->
      <!--<mapper url="file:///"/>-->
      <!-- 使用mapper接口类路径 -->
      <!--
      遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
      上边规范的前提是:使用的是mapper代理方法
      -->
      <!--<mapper class=""/>-->
      <!-- 使用批量加载mapper -->
      <!--
      指定mapper接口的报名,mybatis自动扫描包下边的mapper接口进行加载
      遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
      上边规范的前提是:使用的是mapper代理方法
      -->
      <!-- <package name=""/> -->
      </mappers>
      </configuration> <?xml version="1.0" encoding="UTF-8" ?>
      <!-- 此时您可能想知道SqlSession或Mapper类究竟执行了什么。
      MyBatis提供的全套功能可以通过使用多年来MyBatis流行的基于XML的映射语言来实现。
      如果您以前使用过MyBatis,那么您将很熟悉这个概念,但是对XML映射文档进行了大量改进,以后会很清楚。 -->
      <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <!-- namespace命名空间。作用对sql进行分类化管理,理解sql隔离
      注意:使用mapper代理方法开发,namespace有特殊重要的作用 -->
      <mapper namespace="user">
      <select id="selectAllUser" resultType="cn.muriel.mybatis.po.User">
      select * from user
      </select>
      </mapper> /**
      * mybatis是一个持久层的框架
      */
      public class JDBCUtils { public SqlSession connection() throws IOException { //mybatis配置文件
      String path = "SqlMapConfig.xml";
      //得到配置文件流 InputStream inputStream = null;
      SqlSession sqlSession = null;
      inputStream = Resources.getResourceAsStream(path); //创建会话工厂,传入mybatis的配置文件信息
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      //通过工厂得到SqlSession
      sqlSession = sqlSessionFactory.openSession(); return sqlSession; }
      } public abstract class UserDao extends JDBCUtils { public abstract List<User> selectAllUser(); } /**
      * UserDao的实现类
      */
      public class UserDaoImpl extends UserDao { @Override
      public List<User> selectAllUser() {
      try {
      SqlSession connection = connection();
      List<User> users = connection.selectList("user.selectAllUser"); return users;
      } catch (IOException e) {
      e.printStackTrace();
      }
      return null;
      } } /**
      * 测试类
      */
      public class TestUtil { public static void main(String[] args) { UserDao userDao = new UserDaoImpl();
      JSONArray jsonArray = JSONArray.fromObject(userDao.selectAllUser());
      System.out.println(jsonArray + ""); }
      }
  • 方法二
    • #db.properties
      #将数据库连接参数只配置在db.properties中(原因:方便对参数进行统一管理)
      jdbc.driver=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://localhost:3306/travelling_guideling?characterEncoding=utf-8
      jdbc.username=root
      jdbc.password=root <?xml version="1.0" encoding="UTF-8" ?>
      <!-- 配置XML文件包含MyBatis系统核心的设置,包括用于获取数据库连接实例的DataSource,
      以及用于确定如何确定事务范围和控制事务的TransactionManager。 -->
      <!-- 请注意验证XML文档所需的XML标头。 environment元素的主体包含事务管理和连接池的环境配置。
      mappers元素包含一个映射器列表 - 包含SQL代码和映射定义的XML文件和/或带注释的Java接口类。-->
      <!-- 与spring整合后environments配置将废除 -->
      <!--
      mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:
      properties(属性)、settings(全局配置参数)、typeAliases(类型别名)、typeHandlers(类型处理器)、
      objectFactory(对象工厂)、plugins(插件)、environments(环境集合属性对象)、environment(环境子属性对象)、
      transactionManager(事务管理)、dataSource(数据源)、mappers(映射器)
      -->
      <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      <properties resource="db.properties"></properties> <!-- 别名定义 -->
      <typeAliases>
      <!--
      针对单个别名定义
      type:类型的路径
      alias:别名
      -->
      <typeAlias type="cn.muriel.mybatis.po.User" alias="user"/>
      <!--
      批量别名定义
      指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大小写都可以)
      -->
      <!--<package name="cn.muriel.mybatis.po"/>-->
      </typeAliases>
      <environments default="development">
      <environment id="development">
      <!-- 使用jdbc事务管理,事务控制由mybatis -->
      <transactionManager type="JDBC"/>
      <!-- 数据库连接池,由mybatis管理 -->
      <dataSource type="POOLED">
      <!-- ${jdbc.driver}写成${jdbc.Driver},报错 -->
      <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>
      <!-- 通过resource方法一次加载一个映射文件 -->
      <mapper resource="mapper/UserMapper.xml"/>
      <mapper resource="sqlmap/User.xml"/>
      <!-- 使用完全限定路径加载 -->
      <!--<mapper url="file:///"/>-->
      <!-- 使用mapper接口类路径 -->
      <!--
      遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
      上边规范的前提是:使用的是mapper代理方法
      -->
      <!--<mapper class=""/>-->
      <!-- 使用批量加载mapper -->
      <!--
      指定mapper接口的报名,mybatis自动扫描包下边的mapper接口进行加载
      遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
      上边规范的前提是:使用的是mapper代理方法
      -->
      <!-- <package name=""/> -->
      </mappers>
      </configuration> <?xml version="1.0" encoding="UTF-8" ?>
      <!-- 此时您可能想知道SqlSession或Mapper类究竟执行了什么。
      MyBatis提供的全套功能可以通过使用多年来MyBatis流行的基于XML的映射语言来实现。
      如果您以前使用过MyBatis,那么您将很熟悉这个概念,但是对XML映射文档进行了大量改进,以后会很清楚。 -->
      <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <!-- namespace命名空间。作用对sql进行分类化管理,理解sql隔离
      注意:使用mapper代理方法开发,namespace有特殊重要的作用 -->
      <mapper namespace="user"> <!-- 通过OGNL(Object-Graph-Navigation-Language)方式来进行获取 -->
      <select id="selectUser" parameterType="cn.muriel.mybatis.po.UserQueryVo"
      resultType="cn.muriel.mybatis.po.UserCustom">
      select * from user where id = #{userCustom.id}
      </select> </mapper> /**
      * mybatis是一个持久层的框架
      */
      public class JDBCUtils { public SqlSession connection() throws IOException { //mybatis配置文件
      String path = "SqlMapConfig.xml";
      //得到配置文件流 InputStream inputStream = null;
      SqlSession sqlSession = null;
      inputStream = Resources.getResourceAsStream(path); //创建会话工厂,传入mybatis的配置文件信息
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      //通过工厂得到SqlSession
      sqlSession = sqlSessionFactory.openSession(); return sqlSession; }
      } /**
      * mapper.java接口中的方法名和mapper.xml中的statement的id一致
      * mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致
      * mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致
      *
      * 系统框架中,dao层的代码是被业务处公用的
      * 即使mapper接口只有一个参数,可以使用包装类型的pojo满足不同的业务方法的需求
      * 注意:持久层方法的参数可以包装类型、map、service方法中建议不要使用包装类型
      *
      * 【使用mapper.java的时候 必须是public interface UserMapper,
      * 若不小心写成Type class cn.muriel.mybatis.mapper.UserMapper is not known to the MapperRegistry.】
      */
      public interface UserMapper { public List selectAllUser(); public User selectUser(int id) throws Exception;
      } /**
      * 测试类
      */
      public class TestUtil { public static void main(String[] args) { JDBCUtils jdbcUtils = new JDBCUtils(); try {
      SqlSession sqlSession = jdbcUtils.connection();
      UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      JSONArray sendJson = JSONArray.fromObject(mapper.selectUser(4));
      System.out.println(sendJson + ""); } catch (IOException e) {
      e.printStackTrace();
      } catch (Exception e) {
      e.printStackTrace();
      } }
      }
  • ResultType和ResultMap的区别
    •  <!--
      定义resultMap:
      id:对resultMap的唯一标识
      type:reusltMap最终映射的java对象类型,可以使用别名
      --> <resultMap id="userResultMap" type="cn.muriel.mybatis.po.User">
      <!--
      id标识查询结果集中唯一标识
      column:查询出来的列名
      property:type指定的pojo类型中的属性名
      最终resultMap对column和property作一个映射关系(对应关系)
      -->
      <id column="id_" property="id"/>
      <!--
      result:对普通名映射定义
      column:查询出来对列名
      property:type指定对pojo类型中对属性名
      最终resultMap对column和property做一个映射关系(对应关系)
      -->
      <result column="username_" property="username"/>
      </resultMap> <!--
      (resultType和resultMap的区别)
      resultType:使用resultType进行输出映射,只有查询出来的列名和Pojo中的属性名一致,该列才可以映射成功
      不管是输出的pojp单个对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的
      在mapper.java指定的方法返回值类型不一样:
      (1)输出单个pojo对象,方法返回值是单个对象类型
      (2)输出list的pojo对象,方法返回值是List<pojo>
      resultMap:如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间做一个映射关系
      (1)定义resultMap
      (2)使用resultMap作为statement的输出映射类型
      -->
      <!-- 通过OGNL(Object-Graph-Navigation-Language)方式来进行获取 -->
      <select id="selectUser" parameterType="id" resultMap="userResultMap"
      resultType="cn.muriel.mybatis.po.UserCustom">
      select id id_,username username username_ from user where id = #{userCustom.id}
      </select>
  • 什么是动态sql
    • mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼装、组接。
    • if判断
      •  <!-- 模糊查询用户 -->
        <!-- 若resultType写成resultMap 抛异常Result Maps collection does not contain value for XXX -->
        <select id="blurrySelectUser" parameterType="cn.muriel.mybatis.po.UserQueryVo" resultType="cn.muriel.mybatis.po.UserCustom">
        SELECT * from USER
        <!-- where 可以自动去掉条件中第一个and -->
        <where>
        <if test="userCustom != null">
        <if test="userCustom.root != null">
        and root = #{userCustom.root}
        </if>
        <if test="userCustom.username != null and userCustom.username != ''">
        and username LIKE '%${userCustom.username}%'
        </if> </if>
        </where>
        </select> public interface UserMapper { public List blurrySelectUser(UserQueryVo userQueryVo) throws Exception;
        } public class TestUtil { public static void main(String[] args) { JDBCUtils jdbcUtils = new JDBCUtils();
        try {
        SqlSession sqlSession = jdbcUtils.connection();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        UserQueryVo userQueryVo = new UserQueryVo();
        UserCustom user = new UserCustom();
        user.setUsername("a");
        user.setRoot(1);
        userQueryVo.setUserCustom(user);
        JSONArray sendJson = JSONArray.fromObject(mapper.blurrySelectUser(userQueryVo));
        System.out.println(sendJson + ""); } catch (IOException e) {
        e.printStackTrace();
        } catch (Exception e) {
        e.printStackTrace();
        } }
        }
    • sql片段
      •  <!--
        定义sql片段:
        是基于单表来定义sql片段,这样的话这个sql片段可重用性才高
        在sql片段中不要包括where
        -->
        <sql id="blurry_select_user_where">
        <if test="userCustom != null">
        <if test="userCustom.root != null">
        and root = #{userCustom.root}
        </if>
        <if test="userCustom.username != null and userCustom.username != ''">
        and username LIKE '%${userCustom.username}%'
        </if> </if>
        </sql> <!-- 模糊查询用户 -->
        <!-- 若resultType写成resultMap 抛异常Result Maps collection does not contain value for XXX -->
        <select id="blurrySelectUser" parameterType="cn.muriel.mybatis.po.UserQueryVo" resultType="cn.muriel.mybatis.po.UserCustom">
        SELECT * from USER
        <!-- where 可以自动去掉条件中第一个and -->
        <where>
        <!-- 引用sql片段的id,如果refid指定的Id不再当前mapper文件中,需要在前边加namespace -->
        <include refid="blurry_select_user_where"></include>
        <!-- 在这里还可以引用其它的sql片段 -->
        </where>
        </select>
    • foreach
      • public class UserQueryVo {
        
            private List<Integer> ids;
        
             //用户查询条件
        private UserCustom userCustom; public UserCustom getUserCustom() {
        return userCustom;
        } public void setUserCustom(UserCustom userCustom) {
        this.userCustom = userCustom;
        } public List<Integer> getIds() {
        return ids;
        } public void setIds(List<Integer> ids) {
        this.ids = ids;
        }
        } public interface UserMapper { public List blurrySelectUser(UserQueryVo userQueryVo) throws Exception;
        } <select id="blurrySelectUser" parameterType="cn.muriel.mybatis.po.UserQueryVo"
        resultType="cn.muriel.mybatis.po.UserCustom">
        SELECT * from USER
        <!-- where 可以自动去掉条件中第一个and -->
        <where>
        <!-- 引用sql片段的id,如果refid指定的Id不再当前mapper文件中,需要在前边加namespace -->
        <include refid="blurry_select_user_where"></include>
        <!-- 在这里还可以引用其它的sql片段 -->
        </where>
        </select> <!--
        定义sql片段:
        是基于单表来定义sql片段,这样的话这个sql片段可重用性才高
        在sql片段中不要包括where
        -->
        <sql id="blurry_select_user_where">
        <if test="userCustom != null">
        <if test="userCustom.root != null">
        and root = #{userCustom.root}
        </if>
        <if test="userCustom.username != null and userCustom.username != ''">
        and username LIKE '%${userCustom.username}%'
        </if> </if>
        <!--
        collection:指定输入对象中属性集合
        item:每个遍历生成对象中
        open:开始遍历时拼接的串
        close:结束遍历时拼接的串
        spearator:遍历时两个对象中需要拼接的串
           (SQL语句格式:AND (id=1 or id=2 or id =3))=3))
        -->
        <foreach collection="ids" item="user_id" open="AND (" close=")" separator="or">
        <!-- 每个遍历需要拼接的串 -->
        id = #{user_id}
        </foreach>
        </sql> public class TestUtil { public static void main(String[] args) { JDBCUtils jdbcUtils = new JDBCUtils();
        try {
        SqlSession sqlSession = jdbcUtils.connection();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        UserQueryVo userQueryVo = new UserQueryVo();
        UserCustom user = new UserCustom();
        user.setUsername("a");
        user.setRoot(1);
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5); userQueryVo.setIds(list);
        userQueryVo.setUserCustom(user);
        JSONArray sendJson = JSONArray.fromObject(mapper.blurrySelectUser(userQueryVo));
        System.out.println(sendJson + ""); } catch (IOException e) {
        e.printStackTrace();
        } catch (Exception e) {
        e.printStackTrace();
        } }
        }
      •    <!--
        collection:指定输入对象中属性集合
        item:每个遍历生成对象中
        open:开始遍历时拼接的串
        close:结束遍历时拼接的串
        spearator:遍历时两个对象中需要拼接的串
        (SQL语句格式:AND id in (1 , 2 ,3))
        -->
        <foreach collection="ids" item="user_id" open="and id IN (" close=")" separator=",">
        <!-- 每个遍历需要拼接的串 -->
        #{user_id}
        </foreach>

mybatis基础(上)的更多相关文章

  1. myBatis 基础测试 表关联关系配置 集合 测试

    myBatis 基础测试 表关联关系配置 集合 测试 测试myelipse项目源码 sql 下载 http://download.csdn.net/detail/liangrui1988/599388 ...

  2. mybatis基础系列(四)——关联查询、延迟加载、一级缓存与二级缓存

    关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法.别名.输入映射.输出映射 mybat ...

  3. mybatis基础系列(三)——动态sql

    本文是Mybatis基础系列的第三篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(二)--基础语法.别名.输入映射.输出映射 mybatis基础系列(一)--mybatis入门 动态 ...

  4. mybatis基础系列(一)——mybatis入门

    好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...

  5. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  6. MyBatis基础入门《五》核心配置文件

    MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-c ...

  7. Mybatis基础入门学习

    Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...

  8. mybatis学习笔记(六)使用generator生成mybatis基础配置代码和目录结构

    原文:http://blog.csdn.net/oh_mourinho/article/details/51463413 创建maven项目 <span style="font-siz ...

  9. .net在当前日期的基础上加一天

    比如今天是:2015-11-10 18:57:01,在这个基础上加一天,那么就是2015-11-11 18:57:01,代码如下: DateTime now_dt = DateTime.Now; ). ...

  10. 【JavaEE】SSH+Spring Security基础上配置AOP+log4j

    Spring Oauth2大多数情况下还是用不到的,主要使用的还是Spring+SpringMVC+Hibernate,有时候加上SpringSecurity,因此,本文及以后的文章的example中 ...

随机推荐

  1. 接口自动化集成到jenkins(Java+testng+maven+git)

    一jenkins启动命令:jenkins 查看端口号: 1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 二: 登录:http://localhost:8080 输入:u ...

  2. SEED实验——Environment Variable and Set-UID Program实验报告

    任务一:操作环境变量 实验过程一: 用printenv或env打印出环境变量. 在终端输入命令,显示结果如下图所示: 经过实验发现,printenv和env均可输出当前系统的环境变量.不同的是prin ...

  3. js杨辉三角控制台输出

    function Yang(line){ var arr=new Array() ;i<=line;i++){ ]==undefined){arr[i-]=[];} ){arr[]=[i]}){ ...

  4. QEMU KVM Libvirt手册(10): KVM的各种限制

    Overcommits KVM allows for both memory and disk space overcommit. However, hard errors resulting fro ...

  5. 算法与数据结构(八) AOV网的关键路径(Swift版)

    上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...

  6. IDEA使用Maven搭建SSM框架

    搭建环境:Intellij IDEA 2017 JDK 1.8 Tomcat 8.5 MySQL 5.7 Spring 4.x Mybatis 3.x 这个过程确实太麻烦了,我用了两个小时 所以建议用 ...

  7. [Swift]LeetCode714. 买卖股票的最佳时机含手续费 | Best Time to Buy and Sell Stock with Transaction Fee

    Your are given an array of integers prices, for which the i-th element is the price of a given stock ...

  8. 微信小程序开发测试

    微信小程序 在2017-01-09正式上线,本着跟上时代潮流的精神,写一份教程来看看 微信IDE下载地址为: 微信IDE 在windows下直接 双击 exe安装即可,安装完成后的界面如下: 得到这个 ...

  9. HBase篇--初始Hbase

    一.前述 1.HBase,是一个高可靠性.高性能.面向列.可伸缩.实时读写的分布式数据库.2.利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量 ...

  10. oracle收集ash和awr性能报告方法

    1.收集ash报告 [oracle@1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Fri Sep 21 18: ...