Mybatis的简单使用

1.Mybatis是什么

Mybatis是一种基于SQL开发的对象关系映射(ORM)的持久化框架。底层是JDBC,前身是ibatis(在使用时它时相关的就在ibatis包中,如SqlSession,操作数据库的核心)。它的使用,开发人员不用再繁琐的写基类,Mapper接口,映射文件。只需要用反向生成文件去生成前面的三个文件。

2.pom.xml相关配置

2.1在<properties>标签内声明好下面对应的变量值

 <mybatis.version>3.4.5</mybatis.version>
    <junit.version>4.11</junit.version>
    <ehcache.version>2.10.4</ehcache.version>
    <pagehelper.version>4.2.1</pagehelper.version>
    <mybatis-ehcache.version>1.0.0</mybatis-ehcache.version>
    <mybatis-generator-core.version>1.3.5</mybatis-generator-core.version>
    <maven-plugin-api.version>3.5.0</maven-plugin-api.version>
    <mybatis.spring.version>1.3.1</mybatis.spring.version>
    <spring.version>5.0.3.RELEASE</spring.version>
    <jstl.version>1.2</jstl.version>
    <servlet-api.version>4.0.0</servlet-api.version>
    <jsp-api.version>2.3.1</jsp-api.version>
    <jackson.version>2.9.0</jackson.version>
    <commons-fileupload.version>1.3.3</commons-fileupload.version>

 2.2在dependencies标签中加相关依赖(数据库版本我是8.0.25)

<!-- Mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <!--mybatis缓存-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-ehcache</artifactId>
      <version>${mybatis-ehcache.version}</version>
    </dependency>
    <!-- 缓存 -->
    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache</artifactId>
      <version>${ehcache.version}</version>
    </dependency>

    <!-- mybatis反向建模 -->
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>${maven-plugin-api.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>${mybatis-generator-core.version}</version>
    </dependency>
<!--    mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.25</version>
    </dependency>
    <!--springmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- JSP相关 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>${jstl.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${servlet-api.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>${jsp-api.version}</version>
      <scope>provided</scope>
    </dependency>
    <!--json处理-->
    <!--实际上为三个包,但是导入databind会自动导入其他两个包-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <!--文件上传组件-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>${commons-fileupload.version}</version>
    </dependency>

2.3加组件

<plugins>
      <!--maven的mybatis代码生成插件-->
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.5</version>
        <configuration>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20</version>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>

    </plugins>

 2.4配置打包方式

 <!--配置资源打包方式-->
    <resources>
      <resource>
        <!-- 配置打war时候的要打的文件路径 -->
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <!--包含文件夹以及子文件夹下所有资源-->
          <include>**/*.*</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>

 上述写完一定要刷新,这样才会导入

3.创建相关文件

4.核心的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>
    <!--1.引入jdbc.properties:类似于之前DBUtil可以把经常改的属性放到配置文件里去-->
    <properties resource="jdbc.properties"></properties>
    <!--2.通用配置:日志 缓存 ...可选的-->
    <settings>
        <!--开启日志:就可以查看运行sql语句详细步骤-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--全局开启-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <!--3.配置数据库环境(事务,连接)-->
<environments default="mysql">
<!--环境标签可以配置多个(可以是oracle) 但是启动可以通过default属性控制-->
    <environment id="mysql">
        <!--事务管理-->
        <transactionManager type="JDBC"></transactionManager>
        <!--数据源:获取数据库连接的    pooled表示是通过连接池创建-->
        <dataSource type="pooled">
            <!--如果引入了jdbc.properties 借助于类似于EL表达式方式来获取${key}获取value-->
            <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>
    <!--4.配置插件 可选-->

    <!--5.引入映射文件 需要写多个-->
    <mappers>
        <!--
        resource:表示资源 用于项目中的资源
        class:表示类 用于在mapper接口上通过注解的方式实现映射文件,可以不用映射文件
        url:表示地址 用于引入本地磁盘的内容
        -->
        <mapper resource="mapper/HuserMapper.xml"/>
        <!--项目相关的映射文件都要写在这,名字最好复制-->

        </mappers>
</configuration>

5.反向生成文件

5.1先准备好一个jdbc.properties文件(这里要是自己的url,name,password,在指定路径放好jar包文件)

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db6012?useSSL=true&serverTimezone=UTC&characterEncoding=utf-8
jdbc.username=root
jdbc.password=mysql
driverClassPath=D:\\jar\\mysql-connector-java-8.0.25.jar

5.2编写 generatorConfig.xml文件

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
	<!--加载jdbc.properties配置文件-->
	<properties resource="jdbc.properties" />
	<!--配置驱动jar包的位置-->
	<classPathEntry location="${driverClassPath}" />
	<context id="context1" targetRuntime="MyBatis3">
		<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
		<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
		<commentGenerator>
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<jdbcConnection driverClass="${jdbc.driver}"
			connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}" />
    <!--根据表自动生成实体类  新的项目如果包不同一定要更新-->
		<javaModelGenerator targetPackage="com.sc.pojo"
			targetProject="src/main/java">
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
    <!--根据表生成mapper的映射文件  新的项目要修改包的地址-->
		<sqlMapGenerator targetPackage="mapper"
			targetProject="src/main/resources"></sqlMapGenerator>
		<!--根据表生成mapper接口-->
		<javaClientGenerator targetPackage="com.sc.mapper"
			targetProject="src/main/java" type="XMLMAPPER" />

		<!--根据这里配置的表来决定生成多少内容:经常修改的内容-->
		<!--如果重复生成会出现bug	注:
		实体类:会还原 清除我们自定义的功能
		mapper接口:也会还原 清除我们自定义的功能
		映射文件:会追加 在原来xml基础 上面拼接几十个标签
		防止:要么删除之前有的内容 要么一定修改表名
		-->
		<!--表名修改-->
		<table tableName="Huser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
			   enableSelectByExample="false" selectByExampleQueryId="false" >
		</table>


	</context>
</generatorConfiguration>  

5.3相应数据库要有表Huser

5.4用maven可以找到对应项目,之后使用组件

 6.建测试包,方便测试

有可能有人会自动生成,没有生成就手动创建,创建后标记颜色,右击包

结果

建包加类测试

public class TestMyBatis {
    @Test//加测试注解
    public void add() throws IOException {
        InputStream is =
                Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory sf =
                new SqlSessionFactoryBuilder().build(is);
        SqlSession session = sf.openSession();
        //底层通过反射 利用动态代理方式创建Mapper接口实现类
        HuserMapper mapper = session.getMapper(HuserMapper.class);
        Huser u = new Huser();
//        u.setUsername("admin123");
        u.setPassword("123456");
        u.setCreatetime(new Date());
          System.out.println(u);
        mapper.add(u);//只会在内存中保存 还没有执行呢
        session.commit();//事务提交才会发送sql语句执行
        session.close();


    }
}

7.测试后看日志

这样就成功,具体业务会修改mapper接口,随之加修改映射文件,同样的方式测试,保证Mybatis数据不会出现错误,业务层(service)根据业务调用即可。

如有不足,请指正!mybatis官网:MyBatis中文网

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值