Mybaits XML方式与注解方式实现数据库交互 Mybatis简单入门 IDEA版

一、Mybatis环境配置

  1. 使用IDEA创建空白Maven项目;
    在这里插入图片描述
  2. 创建完成以后,在pom.xml文件中添加相关依赖
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.18</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>
    
  3. 添加完成以后,在项目根目录右键,找到maven–>reimport,重新导入
  4. 在main-java目录下创建数据库内容对应的实体类和对应的dao接口
    (1)User类代码如下:
package im.hwp.domain;
import java.io.Serializable;
public class User implements Serializable {
    private String username;
    private String password;
    private int id;
    public User() {
    }
    public User(String username, String password, int id) {
        this.username = username;
        this.password = password;
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", id=" + id +
                '}';
    }
}

(2)dao接口如下:

package im.hwp.mapper;
import im.hwp.domain.User;
import org.apache.ibatis.annotations.Select;
public interface UserMaper {
    @Select("select * from user where id=#{id} ")
    User findUserById(int id);
}

  1. 导入完成以后,在main目录下,将resources目录设置成source root
  2. 需要新建三个文件和一个文件夹
    (1)在resource目录下新建mybaits-config.xml
    请注意,此处文件配置是按照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>
    <!--加载文件属性-->
    <properties resource="mysql.properties"></properties>
    <!--给包中的类注册别名-->
    <typeAliases>
        <typeAlias type="im.hwp.domain.User" alias="User"/>
    </typeAliases>
    <!--配置环境-->
    <environments default="development">
        <!--配置一个id为development的环境-->
        <environment id="development">
            <!--使用JDBC事务-->
            <transactionManager type="JDBC"></transactionManager>
            <!--数据库连接池-->
            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--引用映射文件-->
    <mappers>
        <mapper resource="mapper/User.xml"/>
    </mappers>
    <!-- Continue going here -->

</configuration>

(2)在resources目录下新建mysql.properties文件,添加代码如下

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123

(3)在resources目录下新建log4j.properties文件,代码如下

### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger=debug,stdout,logfile

### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n

### 显示SQL语句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

(4)在resources文件夹下新建mapper包,用于存放对应的mapper.xml文件
在本例中,只有一个User.xml文件。代码如下:

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace设置格式:包名+SQL映射文件名-->
<!--<mapper namespace="im.hwp.mapper.UserMapper">-->
<mapper namespace="im.hwp.mapper.UserMapper">
    <!--根据用户ID查询用户信息-->
    <select id="findUserById" parameterType="int" resultType="User">
        select * from user where id = #{id}
    </select>
</mapper>
  1. 在test目录下新建Apptest类,用于测试,代码如下
package im.hwp;

import im.hwp.domain.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

public class Apptest {
    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 (Exception e) {
            e.printStackTrace();
        }
    }

    //根据id查询用户
    @Test
    public void testFindUserById() {
        //通过sqlSession执行映射文件中定义的SQL,并返回映射结果
        User user = sqlSession.selectOne("findUserById", 1);
        //打印输出结果
        System.out.println(user.toString());
    }
    
    @After
    public void destroy() {
        //提交事务
        sqlSession.commit();
        //关闭sqlSession
        sqlSession.close();
    }
}

  1. 数据库中新建user表,结构如下:
    表设计

到此,demo搭建基本完成。文件目录结构参考如下:
在这里插入图片描述
在这里插入图片描述

二、Mybatis 使用

1.基于xml方式

使用xml方式,需要用到上面创建的User.xml文件,同时在mybatis-config.xml文件中进行相关配置。 配置代码如下:

    <mappers>
        <mapper resource="mapper/User.xml"/>
    </mappers>

使用Apptest类中testFindUserById方法测试demo,控制台打印用户信息如下:

User{username='huang', password='123', id=1}

2.基于注解方式

使用注解方式需要修改两处,mybatis-config.xml中的mapper配置和UserMapper.java中的注解
相关代码如下:
mybatis-config.xml ,需要将原来基于xml的mapper配置修改成如下配置

    <mappers>
        <mapper class="im.hwp.mapper.UserMaper"/>
    </mappers>

UserMapper.java 在对应方法体上面添加注解

    @Select("select * from user where id=#{id} ")
    User findUserById(int id);

两处修改完成以后,执行Apptest中测试方法,控制台输出如下:

User{username='huang', password='123', id=1}

初次学习,理解不到位,如有错误欢迎指正!感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值