Mybatis基础---配置文件

一、需要准备的jar包和配置文件

这里写图片描述
Log4J的jar包
mybatis3.2.2的jar包
Mysql数据库的连接jar包

Log4J的配置文件—>转自网上

#DEBUG < INFO < WARN < ERROR < FATAL
### set log levels ###
log4j.rootLogger=debug, stdout

### 输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n

### show 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
log4j.logger.dao=debug

log4j.logger.dao=debug—->.dao 是你存放 mybatis 映射文件的包

数据库连接配置文件: database.properties—->因人而已

driver=com.mysql.jdbc.Driver
address=jdbc:mysql://localhost:3306/nga?useUnicode=true&characterEncoding=utf8&useSSL=true
user=root
password=556556



二、Mybatis配置文件— mybatis-config.xml 和 (实体类)Mapper.xml

mybatis-config.xml ——->核心配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >
<configuration>
    <!--  引入数据库连接配置文件   database.properties -->
    <properties resource="database.properties"></properties>

    <!--  配置log4J -->
    <settings>
        <setting name="logImpl" value="LOG4J" />
    </settings>

    <!-- 配置连接运行环境  可以配置多个但只能使用 id 对应的运行环境-->
    <environments default="development">
        <environment id="development">
            <!-- 配置事务管理,采用JDBC的事务管理 -->
            <transactionManager type="JDBC"></transactionManager>

            <!--  POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${address}" />
                <property name="username" value="${user}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- 将mapper文件加入到配置文件中  resource路径填写需注意-->
    <!-- 一个mapper文件 对应一个实体类的sql语句映射-->
    <!-- 如有多个可以继续添加相应的 mapper文件-->
    <mappers >
        <mapper resource="userDao/UserMapper.xml" />
    </mappers>
</configuration>

userMapper.xml ——->实体类的 sql 语句 映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >

<!-- mapper文件的命名填写src下的包名到实体类的mapper文件  -->
<!-- 之间用 点号 隔开  -->
<!-- 保证不同的mapper文件不会重名 -->
<mapper namespace="userDao.UserMapper">

    <!-- sql语句的id命名  mapper文件内的唯一限定名  -->
    <select id="countUser" resultType="int">
        select count(*) from user
    </select>

    <!-- parameterType 入参类型如果是实体类的话  填写必须是src下 包名到实体类  用点号隔开 -->
    <!-- 查询结果有很多实体类  是一个集合  resultType=====>指的是一个结果的类型    -->
    <select id="selectUserLike" resultType="entity.User"  parameterType="entity.User">
        select * from user where 1=1
        <if test="loginName!=null and loginName!=''">
            and loginName like concat('%',#{loginName},'%')
        </if>
        <if test="userId!=null">
            <!-- CDATA节中的内容不会做特殊处理 --> 
            <!-- and userid&lt;#{age} --> 
            <![CDATA[and userid<#{userId}]]>
        </if>
    </select>


</mapper>



三、 以接口的形式 查询数据库

这里写图片描述

在对应的实体类的包下新建:
                                          1)接口 : UserMapper.jva
                                          2)实现类 : UserMapperImpl.java
                                          3)工具类 : MybatisUtil.java

1、接口 : UserMapper.jva中的内容:
     对应之前的 userMapper.xml文件 新建和sql映射 id 相同的抽象方法

// 接口的方式查询数据
             1)Mapper文件的命名( namespace)必须为 接口的完全限定名
             2) 接口中的方法名 必须于 sql语句的 id 名称相同

public interface UserMapper {
    /**
     *查询用户条数
     *
     */
    public int countUser();
    /**
     *模糊查询  loginName  like
     *         userId<?   的用户
     */
    public List<User> selectUserLike(User user);

}


2、工具类 : MybatisUtil.java中的内容:

public class MybatisUtil {
    static SqlSessionFactory factory;

    // SqlSessionFactory 是单利模式
    //所以 我们只需要一个SqlSessionFactory 
    //用静态代码块的形式 保证只获取一个SqlSessionFactory 
    static {
        try {
            // 把mybatis核心配置文件读成输入流
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            // 创建session工厂-----SqlSessionFactoryBuilder() 用过即丢
            factory = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 获得 sqlSession
     * @return
     */
    public static SqlSession getSqlSession() {
        // 由工厂产生session----> factory.openSession.(true)是开启自动提交
        // 手动提交 session.commit();
        return factory.openSession(true);
    }

    /**
     * 关闭 传入的sqlSession
     * @param sqlSession
     */
    public static void closeSqlSession(SqlSession sqlSession){
        sqlSession.close();
    }
}


3、实现类 :UserMapperImpl.java中的内容:

public class UserMapperImpl implements UserMapper {

    public int countUser() {
        // 获得SqlSession 对象--->利用工具类获取
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        // 获得接口的实例---->sqlSession.getMapper()获取
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 调用接口的方法
        int count = mapper.countUser();
        //关闭此次会话
        MybatisUtil.closeSqlSession(sqlSession);
        return count;
    }

    /**
     * 根据 姓名模糊查询用户 并且 userid<?
     * 对应Mapper文件sql语句映射的返回类型是一个实体resultType="entity.User"--->指的是一个结果的类型 
     * 抽象方法返回的是 User实体类的集合
     */
    @Override
    public List<User> selectUserLike(User user) {
        // 获得SqlSession 对象
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        // 使用sqlSession.getMapper()方法 自动获得接口的实例
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 调用接口的方法
        List<User> list1 = mapper.selectUserLike(user);
        MybatisUtil.closeSqlSession(sqlSession);
        return list1;
    }
}

这样配置结束后, 测试类就可以新建接口的实现类的实例,调用方法进行数据库的访问
需注意的地方:
                     1)、Mapper文件的命名—->对应的接口的完全限定名
                     2)、Mapper文件中sql语句映射的id命名—->对应的接口的方法名—>完全相同
                     3)、sql语句映射的parameterType=”entity.User”入参—->对应的接口的入参

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值