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;


posted @ 2019-06-25 19:47  萧余  阅读(199)  评论(0编辑  收藏  举报