zoukankan      html  css  js  c++  java
  • mybatis

    引用基础依赖库

     1  <packaging>pom</packaging> <!--定义子pom对父pom的依赖引入-->
     2     <properties>
     3         <!-- 定义所有第三方依赖库的版本白拿后 -->
     4         <javax.servlet-api.version>4.0.1</javax.servlet-api.version>
     5         <javax.servlet.jsp-api.version>2.3.3</javax.servlet.jsp-api.version>
     6         <junit.version>4.12</junit.version>
     7         <jstl.version>1.2</jstl.version>
     8         <mybatis.version>3.5.1</mybatis.version>
     9         <mysql.version>5.1.47</mysql.version>
    10         <!-- 定义项目构建的相关环境属性 -->
    11         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    12         <maven.compiler.source>1.10</maven.compiler.source>
    13         <maven.compiler.target>1.10</maven.compiler.target>
    14         <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
    15         <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
    16         <maven-javadoc-plugin.version>3.1.0</maven-javadoc-plugin.version>
    17         <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
    18         <!-- 定义资源与profile配置 -->
    19         <profiles.dir>src/main/profiles</profiles.dir>   <!-- 定义profiles父路径 -->
    20         <resources.dir>src/main/resources</resources.dir>   <!-- 定义resources父路径 -->
    21         <java.dir>src/main/java</java.dir>   <!-- 定义java父路径 -->
    22     </properties>
    23     <profiles>    <!-- 明确的进行具体的资源名称的配置,这个名称是在maven打包的时候使用的名称 -->
    24         <profile>   <!-- 定义具体的profile引用名称 -->
    25             <id>dev</id>    <!-- 定义profile名称为dev -->
    26             <properties>    <!-- 定义当前的profile属性名称 -->
    27                 <profile.dir>${profiles.dir}/dev</profile.dir>
    28             </properties>
    29             <activation>    <!-- 如果在编译的时候没有设置任何的profile名字,则此配置生效 -->
    30                 <activeByDefault>true</activeByDefault> <!-- 默认打包环境 -->
    31             </activation>
    32         </profile>
    33         <profile>   <!-- 定义具体的profile引用名称 -->
    34             <id>test</id>   <!-- 定义profile名称为test -->
    35             <properties>
    36                 <profile.dir>${profiles.dir}/test</profile.dir>
    37             </properties>
    38         </profile>
    39         <profile>   <!-- 定义具体的profile引用名称 -->
    40             <id>product</id>   <!-- 定义profile名称为product -->
    41             <properties>
    42                 <profile.dir>${profiles.dir}/product</profile.dir>
    43             </properties>
    44         </profile>
    45     </profiles>
    46     <dependencyManagement>
    47         <dependencies>
    48             <dependency>
    49                 <groupId>mysql</groupId>
    50                 <artifactId>mysql-connector-java</artifactId>
    51                 <version>${mysql.version}</version>
    52             </dependency>
    53             <dependency>
    54                 <groupId>org.mybatis</groupId>
    55                 <artifactId>mybatis</artifactId>
    56                 <version>${mybatis.version}</version>
    57             </dependency>
    58             <dependency>
    59                 <groupId>junit</groupId>
    60                 <artifactId>junit</artifactId>
    61                 <version>${junit.version}</version>
    62                 <scope>test</scope>
    63             </dependency>
    64             <dependency>
    65                 <groupId>javax.servlet</groupId>
    66                 <artifactId>javax.servlet-api</artifactId>
    67                 <version>${javax.servlet-api.version}</version>
    68                 <scope>provided</scope>
    69             </dependency>
    70             <dependency>
    71                 <groupId>javax.servlet.jsp</groupId>
    72                 <artifactId>javax.servlet.jsp-api</artifactId>
    73                 <version>${javax.servlet.jsp-api.version}</version>
    74                 <scope>provided</scope>
    75             </dependency>
    76             <dependency>
    77                 <groupId>javax.servlet.jsp.jstl</groupId>
    78                 <artifactId>jstl</artifactId>
    79                 <version>${jstl.version}</version>
    80             </dependency>
    81         </dependencies>
    82     </dependencyManagement>

    2.在资源文件resources下建立文件mybatis/mybatis.cfg.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>
        <environments default="mysqlDev">    <!-- 定义数据库连接的相关配置 -->
            <environment id="mysqlDev"> <!-- 配置MySQL数据库连接 -->
                <transactionManager type="jdbc"/>   <!-- 事务控制类型 -->
                <dataSource type="POOLED">  <!-- 使用连接池的模式管理连接 -->
                    <property name="driver" value="org.gjt.mm.mysql.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/数据库名" />
                    <property name="username" value="root" />
                    <property name="password" value="密码" />
                </dataSource>
            </environment>
        </environments>
    </configuration>

    3.创建连接工厂类

    package com.lion.mybatis.util;
    
    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.InputStream;
    public class MyBatisSessionFactory {
        private static final String CONFIG_FILE = "mybatis/mybatis.cfg.xml";
        private static SqlSessionFactory sessionFactory ;
        private static final ThreadLocal<SqlSession> SESSION_THREAD_LOCAL = new ThreadLocal<>();
        static {
            buildSqlSessionFactory();
        }
        private static SqlSessionFactory buildSqlSessionFactory () {
            try{
                InputStream input = Resources.getResourceAsStream(CONFIG_FILE);
                sessionFactory =new SqlSessionFactoryBuilder().build(input);
            }catch (Exception e) {
                e.printStackTrace();
            }
             return sessionFactory ;
        }
        public static SqlSession getSession() {
            SqlSession session = SESSION_THREAD_LOCAL.get();
            if (session == null) {
                session = sessionFactory.openSession();
                SESSION_THREAD_LOCAL.set(session);
            }
            return session;
        }
        public static void close() {
            SqlSession session = SESSION_THREAD_LOCAL.get();
            if (session != null) {
                session.close();
                SESSION_THREAD_LOCAL.remove();
            }
    
        }
    
    
        public static SqlSessionFactory getSessionFactory() {
            return sessionFactory ;
        }
    }

    5.添加日志记录

    (1)导入依赖

                 <log4j.version>2.11.2</log4j.version>
                 <slf4j.version>1.7.26</slf4j.version>
                 <dependency>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-core</artifactId>
                    <version>${log4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>

    (2)

    在src/main/resources配置依赖文件log4j.properties,方法一需要定义两个文件

    方法一:log4j.properties文件定义:log4j.logger.com.lion.mapper=TRACE

                   News.xml文件定义:<mapper namespace="com.lion.mapper.NewNS">

    方法二:直接在log4j.properties文件中定义:log4j.logger.com.lion.mapper.NewsNS=TRACE

    # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
    # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
    log4j.rootLogger=INFO, stdout, logfile
    log4j.logger.com.lion.mapper.NewsNS=TRACE
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.appender.logfile=org.apache.log4j.RollingFileAppender
    log4j.appender.logfile.File=logs/my.log
    log4j.appender.logfile.MaxFileSize=512KB
    # Keep three backup files.
    log4j.appender.logfile.MaxBackupIndex=3
    # Pattern to output: date priority [category] - message
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

    6.设置别名

    在mybatis.cfg.xml里设置,随着类的增多,避免手动定义,我们通常设置为第二种方法

    方法一:<typeAliases><!--别名设置,放置在环境配置environments上方-->
            <typeAlias type="com.lion.mybatis.vo.News" alias="News"/>
        </typeAliases>
    方法二:<typeAliases>   <!-- 扫描指定包下的类,类名称就是别名 -->
    <package name="com.lion.mybatis.vo"/>
    </typeAliases>
     

    7.获取主键,修改News.xml配置文件

    方法一:

    keyProperty="nid"  :当前vo类属性名称
    keyColumn="nid" :主键列(如果列名称和属性名称相同可以不写此配置)
    useGeneratedKeys="true" :进行主键的生成操作
     <insert id="doCreate" parameterType="News" keyProperty="nid" keyColumn="nid" useGeneratedKeys="true">

    方法二:

    <insert id="doCreate" parameterType="News">
            INSERT INTO news(title,content) VALUES (#{title},#{content}) ;
            <selectKey keyColumn="nid" keyProperty="nid" order="AFTER" resultType="java.lang.Long">
                SELECT LAST_INSERT_ID()
            </selectKey>
        </insert>
    keyProperty="nid"  :当前vo类属性名称
    keyColumn="nid" :主键列(如果列名称和属性名称相同可以不写此配置)
    resultType="java.lang.Long" :逐渐查询后返回的数据类型
    order="AFTER" : 描述语句出现位置,增加之前(BEFORE),增加之后(AFTER);
    |-如果是Mysql数据库,是增加之后获取增长的ID;
       |-如果是Oracle数据库,使用序列模式,需要在增加之前获取增长的ID;


  • 相关阅读:
    图像特征工程
    神经网络在多分类上的应用——数据预处理
    Robotics Lab3 ——图像特征匹配、跟踪与相机运动估计
    Robotics Lab2——相机模型,点云图拼接与深度测量
    Robotics Lab1 —— 基于颜色特征的目标识别与追踪实验
    【Ubuntu16.04】解决Qt安装包(.run文件)不能用./命令执行的问题
    【ROS系统】创建消息(msg)后使用rosmsg命令报错的解决办法
    【ROS系统】执行roslaunch命令启动launch文件提示Invalid roslaunch XML syntax错误的解决办法
    【ROS系统】解决找不到用户工作空间下的程序包的问题——E:No such package
    【UEFI+GPT/BIOS+MBR】两种模式在Windows系统下安装Ubuntu系统
  • 原文地址:https://www.cnblogs.com/fcitx/p/11084987.html
Copyright © 2011-2022 走看看