每一年都奔走在自己热爱里

荣耀的背后刻着一道孤独

第一个mybatis程序

12.2 第一个Mybatis程序

12.2.1 搭建环境

  • 第一步创建sql

image-20220208191927115

create database mybatis
use mybatis
create table `user`(
 `id` int(20) not null primary key,
`name` varchar(30) default null,
`pwd` varchar(30) default null
)engine=innodb default charset=utf8;
insert into `user`(`id`,`name`,`pwd`)values
(1,'张三','123456'),
(2,'李四','123556'),
(3,'张三','124456')
select * from user;
  • 新建项目

    1. 新建一个普通的maven项目

image-20220208192215643

image-20220208192254029

检查maven:

image-20220208192529964

  1. 删掉src 目录

image-20220208192729011

  1. 导入maven依赖:

<!--          导入依赖-->
   <dependencies>
<!--        mysql驱动-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.46</version>
       </dependency>
<!--mybatis-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.7</version>
       </dependency>
<!--junit-->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
           <scope>test</scope>
       </dependency>
   </dependencies>

image-20220208193928841

12.2.2 创建一个模块

image-20220208194317068

image-20220208194453736

  • 创建一个mybatis核心配置文件

  1. 先新建一个xml文件

image-20220208195714166

  1. 把官方文档中的这段代码复制进去


<?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>
 <environments default="development">
   <environment id="development">
     <transactionManager type="JDBC"/>
     <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="org/mybatis/example/BlogMapper.xml"/>
 </mappers>
</configuration>
  1. 连接数据库

image-20220208200328711

<?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>
   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3307/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
               <property name="username" value="root"/>
               <property name="password" value="201314"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="com/kuang/dao/UserMapper.xml"/>
   </mappers>
</configuration>

 

  • 编写mybatis工具类

  1. 先建立一个包

image-20220208200718040

  1. 建立工具类

    image-20220208200900504

public class mybatis {
   private static SqlSessionFactory sqlSessionFactory;//提升作用域
   static {
       try {
           //使用mybatis第一步 获取sqlsessionFactory对象
           String resource = "mybatis-config.xml";//这里可以直接引用
           InputStream inputStream = Resources.getResourceAsStream(resource);
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      }catch (IOException e){
           e.printStackTrace();
      }
  }
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
public static SqlSession getSqlSession(){
   return sqlSessionFactory.openSession();//创建sqlsession,等会就可以使用sqlsession来进行操作数据库了
   //到这一步相当于jdbc中用drivermanger加载出来的对象
}
}

到此连接上了数据库

 

12.2.3 编写代码

  • 实体类

    image-20220208203343799

    pojo:简单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBeans,

    使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的

    POJO是Plain Ordinary Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类

    POJO有一些private的参数作为对象的属性。**然后针对每个参数定义了get和set方法作为访问的接口

      //实体类
    public class user {
    private int id;
    private String name;
    private  String pwd;
        //无参
       public user() {
      }
        //有参
       public user(int id, String name, String pwd) {
           this.id = id;
           this.name = name;
           this.pwd = pwd;
      }
       //get,set
       public int getId() {
           return id;
      }
       public void setId(int id) {
           this.id = id;
      }
       public String getName() {
           return name;
      }
       public void setName(String name) {
           this.name = name;
      }
       public String getPwd() {
           return pwd;
      }
       public void setPwd(String pwd) {
           this.pwd = pwd;
      }
      //tostring
       @Override
       public String toString() {
           return "user{" +
                   "id=" + id +
                   ", name='" + name + '\'' +
                   ", pwd='" + pwd + '\'' +
                   '}';
      }
    }
  • Dao接口

建立接口,这个dao是用来操作数据库一些对象的实体,dao就等价于mapper

image-20220208204415340

package com.kuang.dao;
import com.kuang.pojo.user;
import  java.util.List;
public interface UserDao {
   List<user> getUserList();
}
  • 接口实现类

建立配置文件,由原来的UserDaoimp转变为一个Mapper配置文件

image-20220208210937289

<?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 绑定一个对应的dao或者mapperjiekou-->
<mapper namespace="com.kuang.dao.UserDao">
<!--    select语句 ,id对应了userdao里面的方法名  resultType 写道泛型名-->
    <select id="getUserList" resultType="com.kuang.pojo.user" >
   select * from mybatis.user;
</select>
</mapper>

select语句 ,id对应了userdao里面的方法名 resultType 写道泛型名

12.2.4 测试

注意点:

image-20220208212415717

<mappers>
   <mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>

核心配置里面的这个不能少,不然就会报上面的错误

每一个mapper.xml都要在核心配置文件中注册,注册代码如下


<mappers>
   <mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>

maven项目无法被解析

image-20220208213353753

<!-- maven 默认不会编译src/main/java目录下的配置文件,需要手动指定-->    
   <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
                   <includes>
                  <include>**/*.properties</include>
                       <include>**/*.xml</include>
                   </includes>
               <filtering>false</filtering>
           </resource>
       </resources>
   </build>

解决方法就是将上面的这段代码复制到pom.xml文件中

MapperRegistry是什么:

核心配置文件中注册Mapper

  • junit测试

  1. JUnit是一个Java语言的单元测试框架。

  2. JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

  3. JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。

  4. Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

总结:junit可以实现自动测试

建立测试类

image-20220208211813618

package com.kuang.dao;
import com.kuang.pojo.user;
import com.kuang.util.mybatis;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
   @Test
   public void test(){
       //第一步:获取sqlsession对象
       SqlSession sqlSession= mybatis.getSqlSession();//用工具类来获取
       //方式一:getMapper
        UserDao userDao=sqlSession.getMapper(UserDao.class);
       List<user> userList=userDao.getUserList();//获得结果集
       for (user User :userList){
           System.out.println(User);
      }
   //关闭sqlsession
       sqlSession.close();
  }
}

取出数据:

image-20220208223347505

 

 

 

 

posted @ 2022-02-08 22:45  学技术的小凯  阅读(97)  评论(0编辑  收藏  举报