[MyBatis]整合Spring

来源:互联网 发布:linux如何查看文件权限 编辑:程序博客网 时间:2024/06/08 07:36

在项目开发中,MyBatis都是与Spring进行整合开发的,使得MyBatis使用起来更加方便。

pom.xml

jar 包 版本号 mybatis.version 3.4.5 mybatis.spring.version 1.3.1 mysql.version 6.0.6 druid.version 1.1.5 p6spy.version 3.5.1 spring.version 4.3.12.RELEASE log4j.version 1.2.17 slf4j-log4j.version 1.7.25

jar包版本管理我放在了why-root里统一管理,也可以直接写版本号。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <parent>    <artifactId>why-root</artifactId>    <groupId>com.base.why</groupId>    <version>1.0-SNAPSHOT</version>    <relativePath>../why-root/pom.xml</relativePath>  </parent>  <groupId>com.why.mybatis</groupId>  <artifactId>mybatis-why</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>jar</packaging>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>    <!-- Mybatis -->    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis</artifactId>    </dependency>    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis-spring</artifactId>    </dependency>    <!--SQL监控打印-->    <dependency>      <groupId>p6spy</groupId>      <artifactId>p6spy</artifactId>    </dependency>    <!-- MySql -->    <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>    </dependency>    <!-- 连接池 -->    <dependency>      <groupId>com.alibaba</groupId>      <artifactId>druid</artifactId>    </dependency>    <!--spring-->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-core</artifactId>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-beans</artifactId>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context-support</artifactId>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-aop</artifactId>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jdbc</artifactId>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-aspects</artifactId>    </dependency>    <!--日志-->    <dependency>      <groupId>log4j</groupId>      <artifactId>log4j</artifactId>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-log4j12</artifactId>    </dependency>    <!--测试-->    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <scope>test</scope>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <configuration>          <source>1.8</source>          <target>1.8</target>        </configuration>      </plugin>    </plugins>    <resources>      <resource>        <directory>src/main/java</directory>        <includes>          <include>**/*.properties</include>          <include>**/*.xml</include>        </includes>        <filtering>false</filtering>      </resource>    </resources>  </build></project>

项目目录结构

这里写图片描述

resources

1.db.properties

数据库连接的配置文件

jdbc_driverClassName=com.mysql.cj.jdbc.Driverjdbc_url=jdbc:mysql://localhost:3306/401?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNulljdbc_username=rootjdbc_password=root

2.log4j.properties

日志打印的配置文件

#rootlog4j.rootLogger=info,CONSOLE,file# CONSOLElog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=ERRORlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %l %t |- %m%n#filelog4j.appender.file=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.DatePattern=yyyyMMddlog4j.appender.file.File=../logs/authority-service.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d %-5p %l %t |- %m%n#dubbolog4j.logger.com.alibaba.dubbo=ERROR##p6spylog4j.additivity.p6spy=falselog4j.logger.p6spy=info,spyConsole,filelog4j.appender.spyConsole=org.apache.log4j.ConsoleAppenderlog4j.appender.spyConsole.Target=System.outlog4j.appender.spyConsole.layout=org.apache.log4j.PatternLayoutlog4j.appender.spyConsole.layout.ConversionPattern=######%m%n

3.spy.properties

打印查询数据库执行的SQL

reloadproperties=trueappender=com.p6spy.engine.spy.appender.Slf4JLoggerlogMessageFormat=com.why.mybatis.utils.P6SpyLoggerdatabaseDialectDateFormat=yyyy-MM-dd HH:mm:ssexcludecategories=info,debug,result,resultset

4.SqlMapConfig.xml

MyBatis的全局配置文件

<?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></configuration>

5.spring-mybatis.xml

spring和mybatis整合的配置文件,注意

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <!--加载db配置文件-->    <context:property-placeholder location="classpath:db.properties"/>    <!--p6spy 监控-->    <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">        <constructor-arg ref="dataSourceDruid"/>    </bean>    <!--数据源,使用druid-->    <bean id="dataSourceDruid" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">        <property name="driverClassName" value="${jdbc_driverClassName}"/>        <property name="url" value="${jdbc_url}"/>        <property name="username" value="${jdbc_username}"/>        <property name="password" value="${jdbc_password}"/>    </bean>    <!--sqlSessionFactory-->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!--数据库连接池-->        <property name="dataSource" ref="dataSource"/>        <!--加载MyBatis的全局配置文件-->        <property name="configLocation" value="mybatis/SqlMapConfig.xml"/>        <!--加载mapper中的xml文件-->        <property name="mapperLocations" value="classpath:com/why/mybatis/mapper/*.xml"/>    </bean>    <!--加载mapper的接口即dao-->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.why.mybatis.dao"/>        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>    </bean></beans>

UserEntity

自己生成get、set方法

    private String id;    private String password;    private String userCode;    private String userRealName;    private String email;    private String telNum;    private String schoolNo;    private String operator;    private String remark;    private String isDelete;    private Date createTime;

UserDao

package com.why.mybatis.dao;import com.why.mybatis.entity.UserEntity;public interface UserDao {    UserEntity findUserById(String userId);}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.why.mybatis.dao.UserDao">    <select id="findUserById" parameterType="string" resultType="com.why.mybatis.entity.UserEntity">        SELECT          *        FROM          t_user        WHERE          id=#{userId}    </select></mapper>

P6SpyLogger

package com.why.mybatis.utils;import com.p6spy.engine.spy.appender.MessageFormattingStrategy;import java.text.SimpleDateFormat;import java.util.Date;/** * p6spy打印日志输出格式修改 * 1.只打印最终执行的sql. * 2.sql换到下一行 * 3.结尾处增加分号,以标示sql结尾 */public class P6SpyLogger implements MessageFormattingStrategy {    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");    @Override    public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql) {        if (!("").equals(sql.trim())) {            return format.format(new Date()) + " | took " + elapsed + "ms | " + category + " | connection " + connectionId + "\n "                    + sql + ";";        }        return "";    }}

Test

package com.why.mybatis;public class MybatisTest {    private ApplicationContext applicationContext;    @Before    public void setUp() {        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/spring-mybatis.xml");    }    @Test    public void testMybatis() {        UserDao userDao = (UserDao) applicationContext.getBean("userDao");        UserEntity userEntity = userDao.findUserById("11DauYzFcEEnZBgN324ZA");        System.out.println(userEntity);    }}

运行测试类,得到执行结果如下图所示:
这里写图片描述

总结:spring整合MyBatis的步骤基本上就是如上的步骤和代码了,上面仅仅是实现了功能,没有对数据库连接池的各种属性进行自定义,也没有对MyBatis进行更多的设置,这就需要根据需求进行优化了。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小型密码箱 密码箱什么牌子的好 怎么开密码箱的锁 怎么开密码箱 密码箱什么牌子好 密码箱品牌 密码箱锁了怎么办 密码箱牌子 密码箱开不了怎么办 学生密码箱 密码箱如何开锁 怎么改密码箱的密码 密码箱怎么打开 怎样打开密码箱 如何解密码箱的密码 密码箱报价 如何开密码箱图解 密码箱打不开了 密码箱哪个好 怎么修改密码箱密码 名牌密码箱 密码箱怎么设置 密码箱打不开咋办 密码箱怎么修改密码 密码箱怎么换密码 鬼武者密码箱 密码箱怎么设密码 密码箱怎样设置密码 密码箱密码锁打不开怎么办 密码箱如何改密码 品牌行李箱 汽车行李箱 英雄群侠传2宝箱密码 福尔摩斯密码对照表 撤销工作表原始密码 靓密码套盒价格表 密码锁屏 密码锁门怎么改密码 密码锁屏下载 手机密码锁屏 指纹密码门锁安全吗