Mybatis3——【2】Mybatis快速入门

本文介绍了如何准备MyBatis开发环境,包括引入jar包、配置log4j,创建数据库表,定义JavaBean和Mapper接口,配置mybatis全局和Mapper文件,并进行了测试操作。详细步骤涵盖从环境搭建到功能测试的全过程。
摘要由CSDN通过智能技术生成

2.1 开发环境的准备

  • 导入 MyBatis 框架的 jar 包、Mysql 驱动包、log4j 的 jar 包
    • myBatis-3.5.2.jar 、mysql-connector-java-5.1.37-bin.jar 、log4j.jar
    • 推荐使用Maven导入Maven Repository
          <!-- 导入依赖 -->
          <dependencies>
              <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
                  <version>3.5.2</version>
              </dependency>
      
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.47</version>
              </dependency>
      
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.11</version>
                  <scope>test</scope>
              </dependency>
      
              <!-- https://mvnrepository.com/artifact/log4j/log4j -->
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>1.2.17</version>
              </dependency>
              
          </dependencies>
      
  • 导入log4j的配置文件
#指定日志的输出级别与输出端
log4j.rootLogger=DEBUG,Console,A
# 控制台输出配置
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
# 文件输出配置
log4j.appender.A = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File = D:/log.txt #指定日志的输出路径
log4j.appender.A.Append = true
log4j.appender.A.Threshold = DEBUG
log4j.appender.A.layout = org.apache.log4j.PatternLayout #使用自定义日志格式化器
log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n #指定日志的输出格式
log4j.appender.A.encoding=UTF-8 #指定日志的文件编码

2.2 创建测试表

  • 创建数据库和表的sql语句
--创建库
CREATE DATABASE mybatis;
--使用库
USE mybatis;
--创建表
CREATE TABLE `t_employee` (
  `id` INT (11) NOT NULL AUTO_INCREMENT,
  `empname` VARCHAR (50) NOT NULL,
  `gender` INT (1) DEFAULT NULL,
  `email` VARCHAR (100) DEFAULT NULL,
  `login_account` VARCHAR (100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE = INNODB AUTO_INCREMENT = 13 DEFAULT CHARSET = utf8
  • 创建成功的表
    在这里插入图片描述

2.3 IEDA目录结构

在这里插入图片描述

2.4 创JavaBean机和Mapper接口

  • JavaBean
/**
 * @author wolffy
 * @create 2021-06-14 16:09
 */
public class Employee {
    private Integer id;
    private String empName;
    private Integer gender;
    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", empName='" + empName + '\'' +
                ", gender=" + gender +
                ", email='" + email + '\'' +
                '}';
    }
}
  • Mapper接口
/**
 * @author Wolffy
 * @create 2021-06-17 9:23
 */
public interface EmployeeMapper {
    //根据id查询员工
    public Employee getEmpById(Integer id);
    //更新员工信息
    public int updateEmployee(Employee employee);
    //删除员工
    public int deleteEmployee(Integer id);
    //添加员工
    public int insertEmployee(Employee employee);
}

2.5 创建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>
    <!--加载属性文件-->
    <properties resource="db.properties"></properties>
    <settings>
        <!--开启驼峰命名自动映射,即从经典数据库列名 login_account 映射到经典 Java 属性名 loginAccount-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!--配置环境-->
    <environments default="development">
        <environment id="development">
            <!--使用JDBC事务-->
            <transactionManager type="JDBC"/>
            <!--数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
                <property name="username" value="数据库登录用户名"/>
                <property name="password" value="登录密码"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件(每个接口的实现文件)-->
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>
</configuration>

2.6 创建SQl映射文件

<?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">
<!--
    nameplace:名称空间——指定为接口的全类名
    id:唯一标识——设置为方法名
    resultType:返回值类型
    #{id}:从传递过来的参数中取出id值

    public interface EmployeeMapper {
        public Employee getEmpByID(Integer id);
    }
-->
<mapper namespace="com.wolffy.dao.EmployeeMapper">
    <!--根据id查询员工-->
    <select id="getEmpById" resultType="com.wolffy.pojo.Employee">
        select * from t_employee where id = #{id}
    </select>
    <!--
        增删改不用写返回值类型,写返回影响多少行
        mybatis自动判断:
            如果是数值型——自动返回影响多少行
            如果是boolean——影响0行返回false,否则true
    -->
    <!--更新员工-->
    <update id="updateEmployee">
        update t_employee
            set empname= #{empName}, gender= #{gender}, email= #{email}
            where id= #{id}
    </update>
    <!--删除员工-->
    <delete id="deleteEmployee" parameterType="int">
        delete from t_employee where id= #{id}
    </delete>
    <!--添加员工-->
    <insert id="insertEmployee">
        insert into t_employee (empname, gender, email)
        values (#{empName}, #{gender}, #{email});
    </insert>
</mapper>

2.7 测试

**
 * @author wolffy
 * @create 2021-06-15 21:27
 */
public class MybatisTest {
    SqlSessionFactory sqlSessionFactory;
    SqlSession sqlSession;
    //初始化
    @Before
    public void initSqlSessionFactory() throws IOException {
        //1、根据全局配置文件得到SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        sqlSession = sqlSessionFactory.openSession();
    }
    //测试查询
    @Test
    public void test() throws IOException {
        //2、得到sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3、获取dao接口的实现(映射器)
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
        //4、测试
        try {
            Employee employee = employeeMapper.getEmpById(1);
            System.out.println(employee);
        } finally {

            sqlSession.close();
        }
    }
    //测试添加
    @Test
    public void testInsert() {
        SqlSession sqlSession = sqlSessionFactory.openSession(true);//ture为自动提交

        try {
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
            int i = mapper.insertEmployee(new Employee("Tomcat",0, "zzz@qq.com"));
            System.out.println("添加成功"+ i +"条数据");
        } finally {
            sqlSession.commit();
            sqlSession.close();
        }
    }
    //测试删除
    @Test
    public void testDelete() {
        sqlSession = sqlSessionFactory.openSession();
        EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
        int i = mapper.deleteEmployee(12);
        if (i > 0) {
            System.out.println("删除" + i + "成功");
        } else {
            System.out.println("删除失败");
        }
    }
    //提交事务并释放资源
    @After
    public void destroy() {
        sqlSession.commit();
        sqlSession.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值