Mybatis的使用(包含log4j 、db.properties、测试)

写了好多,也没来得及整理,能贴几个是几个吧。
这个例子里穿插了log4j的使用,以及db.properties文件的使用

项目工程
在这里插入图片描述

实体类User:

package com.ssm.pojo;
import java.io.Serializable;
import java.util.Date;                     
public class User implements Serializable {
   private Integer id;
   private String username;
   private String password;
   private String realname;
   private Integer age;
   private Date birthday;
   private Date regTime;

   public Integer getId() {
      return id;
   }

   public void setId(Integer id) {
      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 String getRealname() {
      return realname;
   }

   public void setRealname(String realname) {
      this.realname = realname;
   }

   public Integer getAge() {
      return age;
   }

   public void setAge(Integer age) {
      this.age = age;
   }

   public Date getBirthday() {
      return birthday;
   }

   public void setBirthday(Date birthday) {
      this.birthday = birthday;
   }

   public Date getRegTime() {
      return regTime;
   }

   public void setRegTime(Date regTime) {
      this.regTime = regTime;
   }

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

测试TestMyBatis

package com.ssm.test;
import com.ssm.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.List;
import java.util.Map;

public class TestMyBatis {
    //封装成Map集合
    @Test
    public void testMap() throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        Map<Integer,User> map = sqlSession.selectMap("selAll","id");
        System.out.println(map);
        System.out.println("-------------------");
        for(Map.Entry<Integer,User> ss : map.entrySet()){
            System.out.println(ss);
        }
        sqlSession.close();
    }
    //查询记录总数
    @Test
    public void selCount() throws IOException {
      InputStream is =   Resources.getResourceAsStream("mybatis.xml");
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
      SqlSession sqlSession = sqlSessionFactory.openSession();
      int count =  sqlSession.selectOne("count");
      System.out.println(count);
      sqlSession.close();
    }

    //根据id查询一条记录
    @Test
    public void selById() throws IOException {
       InputStream is = Resources.getResourceAsStream("mybatis.xml");
       SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
       SqlSession sqlSession = sqlSessionFactory.openSession();
       User user = sqlSession.selectOne("user.selById");
       System.out.println(user);
       sqlSession.close();
    }
    //查询所有
    @Test
    public void testSelAll() throws IOException {
        //Resourse ---资源加载工具,默认去classpath架子啊资源
        InputStream is =  Resources.getResourceAsStream("mybatis.xml");
        //SqlSessionFactoryBuilder---工厂构建者
        //SqlSessionFactory ---会话工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //SqlSession ---会话,用于所有mybatis中操作方法的调用
        SqlSession sqlSession = factory.openSession();
        //调用方法进行查询
        //List<User> list = sqlSession.selectList("selAll");  如果只有一个命名空间,可以不写
        List<User> list = sqlSession.selectList("user.selAll");   //"selAll"就是UserMapper.xml文件里select对应的id值
        System.out.println(list);
        for(User user:list){
            System.out.println(user);
        }
        //关闭资源
        sqlSession.close();
    }
}

log4j.properties:

在这里插入图片描述

mybatis.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>
 <!--配置环境environments,配置并管理多个环境-->
    <environments default="dev">
        <!--配置一个环境-->
        <environment id="dev">
            <!--事务管理器,MyBatis采用和JDBC一致的方式进行事务的管理-->
            <transactionManager type="JDBC"/>
            <!--数据源,使用连接池技术-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                
               <!-- <property name="url" value="jdbc:mysql://localhost:3306/db_ssm"/>-->
                <!--解决日志警告问题,发一个参数过去-->
                <property name="url" value="jdbc:mysql://localhost:3306/db_ssm?SSL=false"/>
                
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--扫描映射-->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

UserMapper.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="user">

    <!--id属性类似于方法名,resultType表示查询结果返回的类型-->
    <select id="selAll" resultType="com.ssm.pojo.User">
    /*   select * from tb_user*/
    /*  解决属性名和列名不一致问题*/
     select id, username, password, realname, age, birthday, reg_Time as regTime from tb_user
   </select

   <select id="selById" resultType="com.ssm.pojo.User">
        select  id, username, password, realname, age, birthday, reg_Time regTime from tb_user where id=1
    </select>
    
    <select id="count" resultType="java.lang.Integer">
        select count(*) from tb_user
    </select>

</mapper>

就只粘贴部分查询的测试结果

查询所有(selALL)的结果:
在这里插入图片描述
根据id查询一条记录的结果:
在这里插入图片描述

上面的日志信息是不是太多了呢,如果想显示一部分,请在上述基础上继续修改log4j.properties文件,修改的地方如下:
在这里插入图片描述

上面的user就是UserMapper.xml中 **<mapper namespace="user">**里的user(也就是命名空间的名字)
selAll就是UserMapper.xml文件里select对应的id值:

再来看看运行结果:
查询所有(selALL)的结果:
在这里插入图片描述
根据id查询一条记录的结果:
在这里插入图片描述
是不是感觉这里咋没发现日志信息?
莫急! 是因为ERROR级别比DEBUG、TRACE的级别高,所以上述的log4j.properties文件修改后,意味着只有…user.selALL这里的级别为TRACE,其他均为ERROR ,又因为程序没有报ERROR错误,所以只显示了查询的结果,没有显示日志信息。

输出级别的种类(左边的级别比右边的高)
FATAl、ERROR、WARN、INFO、DEBUG、TRACE

如果想要根据id查询一条记录的结果也显示同样的日志信息,则再次修改log4j.properties文件,修改的地方如下:

在这里插入图片描述

再来查询下根据id查询一条记录的结果:

在这里插入图片描述
看下,日志信息是不是出来啦!

不知道你们有没有发现对于日志信息配置,我没有在UserMapper.xml里面写(真正的是我忘记了,哈哈哈)正如下图:
在这里插入图片描述
我虽然没有写,但是测试时,日志信息能够打印出来。这就引起了我的好奇心,所以就去百度了一下才明白,链接在这里

总之,日志信息能打印出来是不假,但是还是建议写上吧,万一你想把value设置其他的值呢!

先写到这了,如果有些错的地方还望告知!
至于db.porperties文件 待会再整理,先歇会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值