(1).Mybatis简单入门:对数据库进行CRUD操作

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层ORM(Object Relational Mapping)框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和java的pojo(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

使用Mybatis操作数据库,进行CRUD操作常用步骤如下:

1.使用Eclipse创建普通java工程,src下新建folder起名lib,添加mybatis和mysql驱动的jar包;
选中包,右键,build path —> add to build path 添加到项目构建路径.
这里写图片描述

2.在MySQL数据库中创建数据库mybatis1,创建数据表users,语句如下:

create table users(
    id int(5) primary key auto_increment,
    name varchar(20),
    phone varchar(11),
    email varchar(50)
) charset=utf8

添加测试数据:

insert into users(name, phone, email) values("aa","13411111111","aa@163.com");
insert into users(name, phone, email) values("bb","13422222222","bb@163.com");
insert into users(name, phone, email) values("cc","13433333333","cc@126.com");
insert into users(name, phone, email) values("dd","13444444444","dd@126.com");

查询如下:
这里写图片描述

3.在src下新建mybatis-cfg.xml配置文件,配置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>
    <environments default="dev"><!-- 可以配置多个环境environment的子标签,此处必须指定一个默认的环境 -->
        <environment id="dev">
            <transactionManager type="jdbc" />
            <dataSource type="pooled">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!-- 添加参数characterEncoding=utf-8解决访问数据库的乱码 -->
                <property name="url" value="jdbc:mysql:///mybatis1?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
</configuration>

4.在包com.qcc.entity下创建实体类User,提供private属性,公有的get/set方法,以及toString()方法.

package com.qcc.entity;

public class User {
    private int id;
    private String name;
    private String phone;
    private String email;
    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 getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", phone=" + phone
                + ", email=" + email + "]";
    }
}

5.在包com.qcc.mapping下新建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,namespace一般设置成包名+当前sql映射的文件名,去掉后缀名 -->
<mapper namespace="com.qcc.mapping.userMapper">
    <!-- id值必须唯一,否则mybatis不知道你要执行重名的哪一个sql语句-->
    <select id="getUser" parameterType="int" resultType="com.qcc.entity.User">  
        select id, name, phone, email from users where id = #{id}  <!-- 用#{}来替换调用语句中传入的参数 -->
    </select>
    <select id="getAll" resultType="com.qcc.entity.User">
        select id, name, phone, email from users
    </select>
</mapper>

6.在mybatis-cfg.xml文件中注册userMapper.xml文件,写在configuration下的mappers标签中,此时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>
    <environments default="dev"><!-- 可以配置多个环境environment的子标签,此处必须指定一个默认的环境 -->
        <environment id="dev">
            <transactionManager type="jdbc" />
            <dataSource type="pooled">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis1?characterEncoding=utf-8"/><!-- 添加参数characterEncoding=utf-8解决访问数据库的乱码 -->
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <!--将映射文件在mybatis-cfg.xml中进行注册-->
    <mappers>
        <mapper resource="com/qcc/mapping/userMapper.xml"/>
    </mappers>
</configuration>

7.为方便后续操作数据库,在包com.qcc.utils中新建一个工具类MybatisUtils,在里面进行读取mybatis-cfg.xml文件,并创建SqlSessionFactory,获取SqlSession对象

package com.qcc.utils;

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 MybatisUtils {

    private static SqlSessionFactory sessionFactory;

    static {
        try {
//          获取mybatis-cfg.xml文件对应的输入流两种方式:
//          InputStream is = MybatisUtils.class.getClassLoader().getResourceAsStream("mybatis-cfg.xml");
            InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (Exception e) {
            throw new RuntimeException("读取配置文件失败!");
        }
    }

    public static SqlSession getSession(boolean autoCommit){
        return sessionFactory.openSession(autoCommit);
    }
}

8.在包com.qcc.test下新建单元测试文件TestUser:

package com.qcc.test;

import java.util.List;

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

import com.qcc.entity.User;
import com.qcc.utils.MybatisUtils;

public class TestUser {
    @Test
    public void getAll() {
        SqlSession session = MybatisUtils.getSession(false);//查询不涉及事务,因此传入false
        //参数为映射sql的标示字符串,其值为userMapper.xml文件中的namespace加上对应的sql语句的id值.
        List<User> userList = session.selectList("com.qcc.mapping.userMapper.getAll");
        for (User user : userList) {
            System.out.println(user);
        }
    }
    @Test
    public void get(){
        SqlSession session = MybatisUtils.getSession(false);
        User user = session.selectOne("com.qcc.mapping.userMapper.getUser", 1);//根据传入的id查询对应的实体对象
        System.out.println(user);
    }
    @Test
    public void add(){
        SqlSession session = MybatisUtils.getSession(true);//参数若为true则会自动提交事务
        User user = new User();
        user.setName("ee");
        user.setPhone("13512341234");
        user.setEmail("ee@qq.com");
        session.insert("com.qcc.mapping.userMapper.addUser",user);
    }
    @Test
    public void update(){
        SqlSession session = MybatisUtils.getSession(true);//参数若为true则会自动提交事务
        User user = new User();
        user.setId(5);
        user.setName("update");
        user.setPhone("13588888888");
        user.setEmail("ee@163.com");
        session.insert("com.qcc.mapping.userMapper.updateUser",user);
    }
    @Test
    public void delete(){
        SqlSession session = MybatisUtils.getSession(true);
        session.delete("com.qcc.mapping.userMapper.delUser", 5);
    }
}

项目的整个目录结构如下图:
这里写图片描述

至此,使用Mybatis操作数据库表进行简单的CRUD操作已经完成.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值