MyBatis入门

MyBatis入门

1. 导入jar包

最新版的Jar包为:
mybatis-3.5.1.jar
另外数据库的驱动包 也需导入

2. 准备配置文件

2.1 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">
<!--        "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,
environments?,databaseIdProvider?,mappers?)"-->
<configuration>
 //这里指定了一个资源文件,里面保存有连接数据库的相关数据
    <properties resource="dbconfig.properties">
    </properties>
    //这里指定了log4j,将会在控制台打印出sql语句等相关信息
    <settings>
        <setting name="logImpl" value="log4j"/> 
    </settings>
    
    //别名的用法
    <typeAliases>
<!--
        <typeAlias type="com.wanmait.demo.pojo.QuestionType" alias="QuestionType"/>
-->
        <!--该包下面的所有类的别名都是简单的类名-->
        <package name="com.wanmait.demo.pojo"/>
    </typeAliases>
	//别名的用法结束

    <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="mapping/QuestionTypeMapper.xml"/>
    </mappers>
</configuration>

dbconfig.properties

    driver = com.mysql.cj.jdbc.Driver
    url = jdbc:mysql://127.0.0.1:3306/FangZuZu?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    user = root
    password = *********

log4j.properties

log4j.rootLogger=OFF,stdout,logfile  //OFF,打印OFF层级及以上的信息,如警告异常严重等信息,全部打印为DEBUG,他的层级最低
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=D:/mybatis.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
###show mybatis 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

2.2 工具类(工厂类)

package com.wanmait.demo.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;

public class SqlSessionFactoryUtil {
    private static SqlSessionFactory factory;
    //静态块
    static {
        try {
        	//从MyBatis.xml中读取配置信息
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSessionFactory getFactory() {
        return factory;
    }
}

2.3 映射文件

<?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="com.wanmait.demo.mapper.QuestionTypeMapper"> 
    //数据库的查
    <select id="findById" parameterType="java.lang.Integer"
            resultType="com.wanmait.demo.pojo.QuestionType">
        select id,title,questionCount,sort,enable from question_type where enable=1 and id=#{id}
    </select>
    <select id="findAll" resultType="com.wanmait.demo.pojo.QuestionType">
        select * from question_type where enable=1
    </select>
    //增
    <insert id="insert" parameterType="com.wanmait.demo.pojo.QuestionType">
        insert into question_type(title,sort) values (#{title},#{sort})
    </insert>
    //改
    <update id="update" parameterType="com.wanmait.demo.pojo.QuestionType">
        update question_type set title=#{title},sort=#{sort} where id=#{id}
    </update>
    //删
    <delete id="delete" parameterType="java.lang.Integer">

        update question_type set enable=0 where id=#{id}
    </delete>
</mapper>

2.4 命名空间指向的接口

package com.wanmait.demo.mapper;

import com.wanmait.demo.pojo.QuestionType;

import java.util.List;

public interface QuestionTypeMapper {
    QuestionType findById(Integer id);
    List<QuestionType> findAll();
    void insert(QuestionType questionType);
    void update(QuestionType questionType);
    void delete(Integer id);
}

2.5 Service类(代替了MVC的DAO)

package com.wanmait.demo.service;

import com.wanmait.demo.mapper.QuestionTypeMapper;
import com.wanmait.demo.pojo.QuestionType;
import com.wanmait.demo.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class QuestionTypeService {

    private QuestionTypeService(){}
    private  static  QuestionTypeService service = new QuestionTypeService();
    public static QuestionTypeService getService()
    {
        return service;
    }

    public List<QuestionType> findAll()
    {
        List<QuestionType> questionTypes = null;
        SqlSession session = SqlSessionFactoryUtil.getFactory().openSession(); 
        //接口与映射文件相连接对应
        QuestionTypeMapper questionTypeMapper = session.getMapper(QuestionTypeMapper.class);
        questionTypes = questionTypeMapper.findAll();
        //关闭
        session.close();
        return questionTypes;
    }
    public void insert(QuestionType questionType)
    {
        SqlSession session = SqlSessionFactoryUtil.getFactory().openSession();
        QuestionTypeMapper questionTypeMapper = session.getMapper(QuestionTypeMapper.class);
       questionTypeMapper.insert(questionType);
       //事务提交,除了数据库的查操作,增.删.改都需要提交以下
       session.commit();
        session.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值