zoukankan      html  css  js  c++  java
  • MybatisPlus学习笔记2:Spring整合Mybatis-Plus

    正如官方所说,mybatis-plus在mybatis的基础上只做增强不做改变,因此其与spring的整合亦非常简单。
    只需把mybatis的依赖换成mybatis-plus的依赖,再把sqlSessionFactory换成mybatis-plus的即可。
    接下来看具体操作:

    1、创建测试表

    -- 创建库
    CREATE DATABASE mp;
    -- 使用库
    USE mp;
    -- 创建表
    CREATE TABLE tbl_employee(
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
    last_name VARCHAR(50),
    email VARCHAR(50),
    gender CHAR(1),
    age int
    );
    INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Tom','tom@atguigu.com',1,22);
    INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Jerry','jerry@atguigu.com',0,25);
    INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Black','black@atguigu.com',1,30);
    INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('White','white@atguigu.com',0,35);
    

    2、创建maven工程

    2.1 pom.xml

    注意:这些是核心依赖,本项目还用到了mysql驱动、c3p0、日志(slf4j-api,slf4j-log4j2)、lombok。
    集成mybatis-plus要把mybatis、mybatis-spring去掉,避免冲突;
    lombok是一个工具,添加了这个依赖,开发工具再安装Lombok插件,就可以使用它了,最常用的用法就是在实体类中使用它的@Data注解,这样实体类就不用写set、get、toString等方法了。
    关于Lombok的更多用法,请自行百度。

    <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>
      <groupId>com.atguigu.mp</groupId>
      <artifactId>mp01</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
      <dependencies>
      		<!-- mp依赖
      			 mybatisPlus 会自动的维护Mybatis 以及MyBatis-spring相关的依赖
      		 -->
    		<dependency>
    		    <groupId>com.baomidou</groupId>
    		    <artifactId>mybatis-plus</artifactId>
    		    <!--<version>2.3</version>-->
                        <version>3.3.1.tmp</version>
    		</dependency>	
    
    		<!--junit -->
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.9</version>
    		</dependency>
    		<!-- log4j -->
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.17</version>
    		</dependency>
    		<!-- c3p0 -->
    		<dependency>
    			<groupId>com.mchange</groupId>
    			<artifactId>c3p0</artifactId>
    			<version>0.9.5.2</version>
    		</dependency>
    		<!-- mysql -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.37</version>
    		</dependency>
    		<!-- spring -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context</artifactId>
    			<version>4.3.10.RELEASE</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-orm</artifactId>
    			<version>4.3.10.RELEASE</version>
    		</dependency>
      
      </dependencies>
      
      
    </project>
    

    2.2、log4j.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
     
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
     
     <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
       <param name="Encoding" value="UTF-8" />
       <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) 
    " />
       </layout>
     </appender>
     <logger name="java.sql">
       <level value="debug" />
     </logger>
     <logger name="org.apache.ibatis">
       <level value="info" />
     </logger>
     <root>
       <level value="debug" />
       <appender-ref ref="STDOUT" />
     </root>
    </log4j:configuration>
    
    

    2.3 jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql:///数据库名?useUnicode=true&characterEncoding=utf8
    jdbc.username=#
    jdbc.password=#
    

    2.4 mybatis-config.xml

    因为是与spring整合,所有mybatis-plus的大部分都写在spring的配置文件中,这里定义一个空的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>
    	
    </configuration>
    
    

    2.5 applicationContext.xml

    <?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"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
    	
    	
    	<!-- 数据源 -->
    	<context:property-placeholder location="classpath:db.properties"/>
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="driverClass" value="${jdbc.driver}"></property>
    		<property name="jdbcUrl" value="${jdbc.url}"></property>
    		<property name="user" value="${jdbc.username}"></property>
    		<property name="password" value="${jdbc.password}"></property>
    	</bean>
    	
    	<!-- 事务管理器 -->
    	<bean id="dataSourceTransactionManager" 
    		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource"></property>
    	</bean>
    	<!-- 基于注解的事务管理 -->
    	<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
    	
    	
    	<!--  配置SqlSessionFactoryBean 
    		Mybatis提供的: org.mybatis.spring.SqlSessionFactoryBean
    		MP提供的:com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean
    	 -->
    	<bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
    		<!-- 数据源 -->
    		<property name="dataSource" ref="dataSource"></property>
    		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
    		<!-- 别名处理 -->
    		<property name="typeAliasesPackage" value="com.atguigu.mp.beans"></property>		
    		
    		<!-- 注入全局MP策略配置 -->
    		<property name="globalConfig" ref="globalConfiguration"></property>
    	</bean>
    	
    	<!-- 定义MybatisPlus的全局策略配置-->
    	<bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
    		<!-- 在2.3版本以后,dbColumnUnderline 默认值就是true -->
    		<property name="dbColumnUnderline" value="true"></property>
    		
    		<!-- 全局的主键策略 -->
    		<property name="idType" value="0"></property>
    		
    		<!-- 全局的表前缀策略配置 -->
    		<property name="tablePrefix" value="tbl_"></property>
    	
    	</bean>
    	
    	<!-- 
    		配置mybatis 扫描mapper接口的路径
    	 -->
    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<property name="basePackage" value="com.atguigu.mp.mapper"></property>
    	</bean>
    
    </beans>
    
    

    2.6、entity

    @Data
    @TableName(value = "tb_employee")//指定表名
    public class Employee {
        //value与数据库主键列名一致,若实体类属性名与表主键列名一致可省略value
        @TableId(value = "id",type = IdType.AUTO)//指定自增策略
        private Integer id;
        //若没有开启驼峰命名,或者表中列名不符合驼峰规则,可通过该注解指定数据库表中的列名,exist标明数据表中有没有对应列
        @TableField(value = "last_name",exist = true)
        private String lastName;
        private String email;
        private Integer gender;
        private Integer age;
    }
    

    2.7 mapper

    BaseMapper

    
    /**
     * Mapper接口
     * 	
     * 基于Mybatis:  在Mapper接口中编写CRUD相关的方法  提供Mapper接口所对应的SQL映射文件 以及 方法对应的SQL语句. 
     * 
     * 基于MP:  让XxxMapper接口继承 BaseMapper接口即可.
     * 		   BaseMapper<T> : 泛型指定的就是当前Mapper接口所操作的实体类类型 
     * 
     */
    public interface EmplopyeeDao extends BaseMapper<Employee> {
    }
    

    这样就完成了mybatis-plus与spring的整合。
    首先是把mybatis和mybatis-spring依赖换成mybatis-plus的依赖,
    然后把sqlsessionfactory换成mybatis-plus的,
    然后实体类中添加@TableName、@TableId等注解,
    最后mapper继承BaseMapper即可。

    2.8测试

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({"classpath:spring/spring-dao.xml"})
    public class test {
        @Autowired
        private DataSource dataSource;
        @Test
        public void testDataSource() throws SQLException {
            System.out.println(dataSource.getConnection());
        }
    }
    
    private ApplicationContext iocContext = new
    ClassPathXmlApplicationContext("applicationContext.xml");
    @Test
    public void testEnvironment() throws Exception{
    DataSource ds = iocContext.getBean("dataSource",DataSource.class);
    Connection conn = ds.getConnection();
    System.out.println(conn);
    }
    
  • 相关阅读:
    DVD X Player 5.5 PRO
    Freefloat FTP Server 1.0漏洞分析
    基于约束的SQL攻击
    Commons-Collections漏洞
    Code-Audit-Challenges-php-2
    GSM Sniffer环境--c118+osmocombb
    XXE (XML External Entity Injection) :XML外部实体注入
    hyperledger fabric学习(1)
    zero to one (4)
    zero to one (3)
  • 原文地址:https://www.cnblogs.com/xidianzxm/p/12461085.html
Copyright © 2011-2022 走看看