实训三笔记 mybatis02基础配置及应用

IDEA+maven+mybatis的demo

1. 新建maven的model (目录结构图)

2. 在pom.xml里引入mybatis的maven依赖

<dependencies>
  <!--日志 start-->
  <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
  </dependency>
  <!--日志end-->

  <!-- mybatis依赖 -->
  <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.0</version>
  </dependency>

  <!-- MySQL数据库依赖 -->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.26</version>
  </dependency>
  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>RELEASE</version>
  </dependency>
</dependencies>

3. 在dao层建立接口EmpDao.java

package com.icis.dao;

import com.icis.pojo.Empl;
import org.apache.ibatis.annotations.Insert;

public interface EmpDao {
    Empl getEmpById(Integer empId);
//    Integer empId;
//    String empName;
//    Double empSalary;
//    Date empIntime;
//    Integer empDeptId;
    @Insert("INSERT INTO emp(emp_id, emp_name, emp_salary, emp_intime, emp_dept_id) VALUES (NULL, #{empName}, #{empSalary}, #{empIntime}, #{empDeptId})")
    Integer insertEmpByEmp(Empl empl);
}

4. pojo包下创建用户实体类Empl.java

package com.icis.pojo;

import java.util.Date;

public class Empl {
   Integer empId;
   String empName;
   Double empSalary;
   Date empIntime;
   Integer empDeptId;

   public Empl() {
   }

   public Integer getEmpId() {
       return empId;
   }

   public void setEmpId(Integer empId) {
       this.empId = empId;
   }

   public String getEmpName() {
       return empName;
   }

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

   public Double getEmpSalary() {
       return empSalary;
   }

   public void setEmpSalary(Double empSalary) {
       this.empSalary = empSalary;
   }

   public Date getEmpIntime() {
       return empIntime;
   }

   public void setEmpIntime(Date empIntime) {
       this.empIntime = empIntime;
   }

   public Integer getEmpDeptId() {
       return empDeptId;
   }

   public void setEmpDeptId(Integer empDeptId) {
       this.empDeptId = empDeptId;
   }

   @Override
   public String toString() {
       return "Employee{" +
               "empId=" + empId +
               ", empName='" + empName + '\'' +
               ", empSalary=" + empSalary +
               ", empIntime=" + empIntime +
               ", empDeptId=" + empDeptId +
               '}';
   }
}

5. 在resources资源目录下建立druid.properties数据库配置文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///db4
jdbc.username=root
jdbc.password=root
jdbc.initialSize=5
jdbc.maxActive=10
jdbc.maxWait=3000

5. 在resources资源目录下建立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>

    <!--导入配置文件-->
    <properties resource="druid.properties"></properties>

    <typeAliases>
        <!--其别名-->
        <typeAlias type="com.icis.dao.UserDao" alias="user"></typeAlias>
    </typeAliases>

    <!-- 配置框架的运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置事务管理器   这里默认JDBC -->
            <transactionManager type="JDBC"/>
            <!-- 数据源配置  mybatis内部默认提供的数据库连接池  POOLED -->
            <dataSource type="POOLED">
                <!-- 连接数据库的四要素 -->
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--xml方式-->
        <!--<mapper resource="UserMapper.xml"></mapper>-->

        <!--
            接口方式
            必须要有UserDao接口和UserDao.xml
            名字必须一致
        -->
        <!--<mapper class="com.icis.dao.UserDao"></mapper>-->

        <!-- 包扫描 -->
        <package name="com.icis.dao"></package>
    </mappers>

</configuration>

5. 在resources资源目录下建立和java相同的文件夹结构

com.icis.dao

并建立EmpDao.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">
<!--
namespace 相当于java语言中的包 (用以防止sql语句名称冲突)实现sql语句隔离
namespace 一定要和接口名UserDao.java相同
 -->
<mapper namespace="com.icis.dao.EmpDao">
    <!--id要和函数名相同 resultType="user" 可以使用别名-->
    <!--<select id="getEmpById" parameterType="java.lang.Integer" resultType="com.icis.pojo.Empl">-->
        <!--SELECT * FROM emp WHERE emp_id=1-->
    <!--</select>-->

    <!--<select id="getUserByName" parameterType="string" resultType="com.icis.pojo.User">-->
        <!--SELECT * FROM user WHERE username LIKE #{username}-->
    <!--</select>-->

    <!--List<User> getUserByName(@Param("vo") QueryVo vo);-->
    <!--<select id="getUserByName" resultType="com.icis.pojo.User">-->
        <!--SELECT * FROM user WHERE username LIKE #{vo.username} limit #{vo.idx},#{vo.pageSize}-->
    <!--</select>-->

    <!--&lt;!&ndash;通过resultMap把User字段和数据库字段对应起来&ndash;&gt;-->
    <resultMap id="empMap" type="com.icis.pojo.Empl">
        <id column="emp_id" property="empId"></id> <!--主键用id-->
        <result column="emp_name" property="empName"></result>
        <result column="emp_salary" property="empSalary"></result>
        <result column="emp_intime" property="empIntime"></result>
        <result column="emp_dept_id" property="empDeptId"></result>
    </resultMap>
    <select id="getEmpById" resultMap="empMap">
         SELECT * FROM emp WHERE emp_id = #{empId}
    </select>

</mapper>

6. 使用junit测试

//读取mybatis-config.xml配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder facBuilder = new SqlSessionFactoryBuilder();

//使用框架获得接口的代理对象
SqlSessionFactory sqlSessionFactory = facBuilder.build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpDao empDao = sqlSession.getMapper(EmpDao.class);
Empl emp = empDao.getEmpById(1);
System.out.println(emp);
sqlSession.close();
import com.icis.dao.EmpDao;
import com.icis.dao.impl.UserDaoImpl;
import com.icis.pojo.Empl;
import com.icis.pojo.QueryVo;
import com.icis.pojo.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.Test;

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

public class EmpTest {
    @Test
    public void test5() throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder facBuilder = new SqlSessionFactoryBuilder();

        //使用框架获得接口的代理对象
        SqlSessionFactory sqlSessionFactory = facBuilder.build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        EmpDao empDao = sqlSession.getMapper(EmpDao.class);
        Empl emp = empDao.getEmpById(1);
        System.out.println(emp);
    }

    @Test
    public void testInsert() throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder facBuilder = new SqlSessionFactoryBuilder();

        //使用框架获得接口的代理对象
        SqlSessionFactory sqlSessionFactory = facBuilder.build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        EmpDao empDao = sqlSession.getMapper(EmpDao.class);
        Empl empl = new Empl();
        empl.setEmpName("哈哈哈");
        empl.setEmpSalary(1.2); empl.setEmpIntime(new Date());
        Integer ret = empDao.insertEmpByEmp(empl);
        sqlSession.commit();
        System.out.println(ret);
    }
}

IDEA+maven+mybatis的demo

  1. 新建maven的model (目录结构图)

  2. pom.xml里引入mybatis的maven依赖

    <dependencies>
      <!--日志 start-->
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      <!--日志end-->
    
      <!-- mybatis依赖 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.0</version>
      </dependency>
    
      <!-- MySQL数据库依赖 -->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.26</version>
      </dependency>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>RELEASE</version>
      </dependency>
    </dependencies>
    
    
  3. dao层建立接口EmpDao.java

     package com.icis.dao;
    
    import com.icis.pojo.Empl;
    import org.apache.ibatis.annotations.Insert;
    
         
    
    
posted @ 2020-11-10 19:10  马角的逆袭  阅读(86)  评论(0编辑  收藏  举报