MyBatis学习记录

前言

学校:许昌学院
学院:信息工程学院
实验环境:操作系统:Windows10 ; JDK版本:1.8 ; 开发工具:IDEA&&Eclipse
参考资料:
Spring+Spring MVC+MyBatis框架技术精讲与整合案例
JAVAEE技术
官方文档

一、MyBatis 入门

本博客写的不够简练,推荐阅读这篇博客:MyBatis-Mapper映射文件配置
另外建议大家多阅读:官方文档

1.1MyBatis简介

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。
SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

用xml文件构建SqlSessionFactory实例是非常简单的事情。
推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。
MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

注:以上来自于:百度百科

1.2MyBatis下载安装

1、手动下载

通过官方网站https://github.com/mybatis/mybatis-3/releases下载MyBatis的最新版本mybatis-3.4.6.zip 。

MyBatis压缩包的文件结构 :
在这里插入图片描述
将相应的架包 <mybatis-3.4.6.jar> 引入项目工程

2、通过Maven安装

2.1 引入mysql依赖包

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
</dependency>

2.2、引入mybatis依赖包

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.8</version>
</dependency>

3、引入日志依赖包
3.1、手动引入

将mybatis-3.4.6\lib\目录下的log4j-1.2.17.jar添加至项目工程
添加文件 :log4j.xml 文件

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

3.2、Maven引入

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

添加:log4j.properties文件

log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{
   yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

1.3MyBatis工作原理

在这里插入图片描述

使用MyBatis操作数据库时,大致经过以下步骤。
(1) 读取MyBatis配置文件mybatis-config.xml
(2) 加载映射文件mapper.xml
(3) 创建会话工厂:SqlSessionFactory
(4) 创建会话:SqlSession
(5) 通过Executor操作数据库
(6) 输入参数和输出结果的映射

1.4简单增删改查

  1. 创建全局配置文件 mybatis-config.xml
#链接mysql的配置文件
jdbc.driver=com.mysql.jdbc.Driver             #驱动包
jdbc.url=jdbc:mysql://localhost:3306/eshop		#数据库地址
jdbc.username=root			#数据库用户名
jdbc.password=123456		#数据库密码
<?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>
    <!--    加载属性文件(MySQL链接信息)  <也可不加载直接写在该文件> -->
    <properties resource="db.properties"/>      

    <!--    给包中的类注册别名   -->
    <typeAliases>
        <package name="com.mybatis.pojo"/>         #实体类所在的包路径
    </typeAliases>
    
    <!--    配置环境:可以有多个,ID为唯一标识 -->
    <environments default="test">
    	<!-- id:唯一标识 -->
		<environment id="test">
		    <!-- 事务管理器,JDBC类型的事务管理器 -->
		    <transactionManager type="JDBC" />
		    <!-- 数据源,池类型的数据源 -->
		    <dataSource type="POOLED">
		       <property name="driver" value="com.mysql.jdbc.Driver" />
		       <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110" />
		       <property name="username" value="root" />
		       <property name="password" value="123456" />
		    </dataSource>
		 </environment>
        
        <environment id="development">
            <!--     使用JDBC事务       -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接使用  指定数据源,使用数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>   <!-- 配置了properties,所以可以直接引用 -->
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 引用映射文件 -->
    <mappers>
        <mapper resource="com/mybatis/mapper/UserInfoMapper.xml"/>
    </mappers>

</configuration>

  1. 配置Map.xml:UserInfoMapper.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.mybatis.mapper.UserInfoMapper">
    <!-- 根据用户编号查询用户 -->
    <select id="findUserInfoById" parameterType="int" resultType="UserInfo">
        select * from user_info where id=#{id}
    </select>

    <!-- 根据用户名查询用户 -->
    <select resultType="UserInfo" parameterType="String" id="findUserInfoByUserName">
        select * from user_info where userName like CONCAT(CONCAT('%',#{userName}),'%')
    </select>

    <!-- 添加用户 -->
    <insert id="addUserInfo" parameterType="UserInfo">
        insert into user_info(userName,password) values (#{userName},#{password})
    </insert>

    <!-- 修改用户信息 -->
    <update parameterType="UserInfo" id="updateUserInfo">
        update user_info set userName=#{userName}, password=#{password} where id=#{id}
    </update>

    <!-- 根据用户编号删除用户 -->
    <delete parameterType="int" id="deleteUserInfo">
        delete from user_info where id=#{id}
    </delete>
</mapper>

  1. 测试:
public class MybatisTest {
   

    private SqlSessionFactory sqlSessionFactory;
    private SqlSession sqlSession;

    @Before
    public void init() {
   
        // 读取mybatis配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream;
        try {
   
            // 得到配置文件流
            inputStream = Resources.getResourceAsStream(resource);
            // 根据配置文件信息,创建会话工厂
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            // 通过工厂得到SqlSession
            sqlSession = sqlSessionFactory.openSession();
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }

    // 根据id查询用户
    @Test
    public void testFindUserInfoById() {
   
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值