MyBatis基本使用

MyBatis的简单使用

首先我来介绍一下什么是MyBatis:MyBatis是java的三大框架之一,用来与数据库交互
底层是实现是采用的jdbc,那么我们这边简单的声明一下MyBatis的好处!容易掌握,SQL语句统一管理,写在xml文件中等等….
Mybatis参考资料和jar包
MyBatis参考项目

我们首先需要以下这些类

1.dao(dao接口)
2.entity(实体类)
3.util(抽取出来的工具类)
4.test(测试类)

需要的文件

1.database.properties(连接数据库的参数配置文件)
2.mybatis-config.xml(MyBatis配置文件)

接下来就一个一个的介绍这些文件怎么写:

1.我们首先写database.properties配置文件

#数据库驱动
driver=com.mysql.jdbc.Driver
#连接url
url=jdbc:mysql://127.0.0.1:3306/mycodelibrary?
useUnicode=true&characterEncoding=utf-8
#数据库用户名
user=root
#数据库密码
password=123

2.然后就是MyBatis的配置文件

<?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>
    <!-- 加载类路径下的数据库配置信息属性文件 -->
    <properties resource="database.properties"/>
    <!-- 配置MyBatis实现log4j -->
    <settings>
        <!-- 配置mybatis的log实现为LOG4J -->
        <setting name="logImpl" value="LOG4J" />
        <!-- 设置resultMap的自动映射级别为NONE(禁止自动匹配) -->
        <!-- <setting name="autoMappingBehavior" value="NONE" /> -->
    </settings>

        <!--类型别名-->
    <typeAliases>
        <package name="keyboard.entity"/>
    </typeAliases>
    <!-- 配置数据库的环境 -->
    <environments default="mysql_development">
        <environment id="mysql_development">
            <!-- 配置事物管理 -->
           <transactionManager type="JDBC"/>
             <!-- POOLED  UNPOOLED JNDI -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${password}"/>
            </dataSource>   
        </environment>
    </environments>
    <!-- 引入映射文件 -->
    <mappers>
        <mapper resource="keyboard/dao/UserMapper.xml"/>
    </mappers>

</configuration>

紧接着就是数据库的实体类(entity)

package keyboard.entity;
/**
 * 用户实体类
 * @author 2B键盘
 *
 */
public class User {

    private int id;//id
    private String username;//用户名
    private String password;//密码
    public int getId() {
        return id;
    }
    public void setId(int 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;
    }
}

在这边写完之后我们就可以开始写SQL语句和dao接口了
我们首先来写dao接口

package keyboard.dao;

import java.util.List;
import keyboard.entity.User;
/**
 * 
 * @author 2B键盘
 *
 */
public interface UserMapper {

    /**
     * 添加一条新的用户数据
     * @param username
     * @param password
     * @return null
     */
    public int addUser(User user);
    /**
     * 查询用户数据
     * @param user
     * @return
     */
    public List<User> selectUserData(User user);
}

映射文件xml所有SQL语句都放在这个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命名空间   必须存唯一 
           保证和子元素中id来联合使用区别不同的mapper文件
 --> 
<mapper namespace="keyboard.dao.UserMapper">

    <!-- 保存用户注册数据 -->
    <insert id="addUser" parameterType="User">
        insert into TestDemo(
            username,password   
        )
        value(
            #{username},#{password}
        )
    </insert>

    <!-- 查询用户数据 -->
    <select id="selectUserData" resultType="User">
        select username,`password`
        from userdata
        where username=#{username} and password=#{password}
    </select>
</mapper>

在上面id必须要和dao接口中的方法名一致#{username}和#{password}是实体类(entity)的构造方法和变量名一致

然后我们将常MyBatis常用的语句抽出来单独写成一个类

package keyboard.util;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {

    private static SqlSessionFactory factory;

    static{//在静态代码块下factory只会被创建一次
        System.out.println("factory================");
            try {
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                factory = new SqlSessionFactoryBuilder().build(is);
                System.out.println("2");
                System.out.println(factory);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }

    public static SqlSession createSqlSession(){
        return factory.openSession(false);//true为自动提交事务
    }

    public static void closeSqlSession(SqlSession sqlSession){
        if(null != sqlSession){
            sqlSession.close();
        }
    }
}

最后就是测试的时刻了

“`
package keyboard.test;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;

import keyboard.dao.UserMapper;
import keyboard.entity.TestDemo;
import keyboard.entity.User;
import keyboard.util.MyBatisUtil;

public class Testone {

private Logger logger = Logger.getLogger(Testone.class);

/**
 * 
 */
@Test
public void one(){
    //创建slqsession对象
    SqlSession sqlSession=null;
    int count=0;
    //list集合存放查询到的数据
    List<User> result=new ArrayList<User>();

    try {

        sqlSession=MyBatisUtil.createSqlSession();

        User a=new User();
        a.setUsername("testusername");
        a.setPassword("testpassword");      result=sqlSession.getMapper(UserMapper.class).selectUserData(a);

        sqlSession.commit();
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        MyBatisUtil.closeSqlSession(sqlSession);
    }

    for(User u : result){
        System.out.println("用户名---------------->"+u.getUsername());
        System.out.println("密码---------------->"+u.getPassword());
    }
}   

}
这样我们就实现了简单的查询了,我写的不怎么清楚,由于第一次写博客大家见谅!在上面我提供了mybatis的jar包和一个mybatis的简单查询,不懂的大家可以看看那个项目,谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值