MyBatis框架入门小案例(关于用mybatis框架对数据库的增删改查)

1.新建一个maven项目,建好相对应的包,在https://mvnrepository.com中导入MyBatis需要的依赖,复制到配置文件中

2.在resources文件下添加mybatis-config.xml文件和mapper文件夹,mybatis-config.xml是连接mysql的主要配置,mapper文件夹存放的是对数据库增删改查的映射

mybatis-config.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>    <!--typeAliases用于给类型指定别名-->    <typeAliases>        <!--方式一:type属性是使用完整的类名,alias属性是别名-->        <!--<typeAlias type="edu.nf.mybatis.entity.Users" alias="Users"/>-->       <!-- 方式二:直接给整个实体包定义别名,name属性指定实体类所在的包名,这样会为每一个实体类自动        生成一个别名,而这个 别名就是实体类的类名并且首字母小写-->        <package name="edu.nf.mybatis.entity"/>    </typeAliases>

<environments default="mysql">        <environment id="mysql">            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/mydb?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8"/>                <property name="username" value="root"/>                <property name="password" value="root"/>            </dataSource>        </environment>    </environments>    <!--将所有的mapper映射配置文件加入到mapper配置中-->    <mappers>        <mapper resource="mapper/UsersMapper.xml"/>    </mappers></configuration>

实体类:Users
package edu.nf.mybatis.entity;

/** * 描述: * 用户实体类 * * @author lance * @create 2018-09-10 14:10 */public class Users {    /**     * 主键     */    private String uid;    /**     * 名字     */    private String userName;    /**     *     */    public String getUid() {        return uid;    }

public void setUid(String uid) {        this.uid = uid;    }

public String getUserName() {        return userName;    }

public void setUserName(String userName) {        this.userName = userName;    }}实体类建好后,就可以配置对应的mapper类,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指定Dao接口的完整类名    mybatis会依据这个接口动态创建一个实现类去实现这个接口    而这个实现类是一个Mapper对象--><mapper namespace="edu.nf.mybatis.dao.UserDaoInf">    <!--在mapper里面就可以配置基于mybatis的增删查改的sql映射配置-->    <!--插入操作,id指定UserDao接口中的方法名,    parameterType为指定方法参数的类型,。也可以定义为TypeAlias中定义的别名    useGeneratedKeys属性设置为true表示使用主键自增长    keyProperty属性指定实体中需要自增长的字段名称

sql设置参数的时候使用#{},#{}是一个ognl表达式,(对象图导航语言)    而这里的#{}中指定的实体中的字段名    -->    <insert id="saveUser" parameterType="users" >        insert into user_info(u_id,u_name) values(#{uid},#{userName})    </insert>    <update id="updateUser" parameterType="users">        update user_info set u_name=#{userName} where u_id=#{uid}    </update>    <delete id="deleteUser" parameterType="java.lang.String">        delete from user_info where u_id=#{uid}    </delete>

<!--根据ID来查询某条用户的信息-->    <select id="findUsersById" parameterType="java.lang.String" resultType="users">        select u_id as uid, u_name as userName from user_info where u_id=#{uid}    </select>    <!--查询所有的用户信息-->    <select id="findAll" parameterType="users" resultType="users">        select u_id as uid ,u_name as userName from user_info    </select></mapper>

我们还需要一个mybatis的工具类,这个工具类主要 是解析mybatis-config.xml,
 并初始化一个SqlSessionFactory工厂,然后通过这个工厂来创建SqlSession实例。 一个SqlSessionr实例其实就是一个变相的Connection对象
package edu.nf.mybatis.tools;

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 java.io.IOException;import java.io.InputStream;

/** * 描述: * mybatis工具类,这个工具类主要 是解析mybatis-config.xml, * 并初始化一个SqlSessionFactory工厂,然后通过这个工厂来创建SqlSession实例。 * 一个SqlSessionr实例其实就是一个变相的Connection对象 * @author lance * @create 2018-09-10 10:38 */public class MyBatisUtil {   /**声明ggwhSqlSessionFactory*/    private static SqlSessionFactory sqlSessionFactory;   /* 在静态代码块中初始化SqlSessionFactory*/    static{        //找到mybatis-config.xml配置文件,并构建一个输入流       //由于配置文件放在resources目录中,编译后会存放在classpath中       try {           //通过Resources类从classpath中找到xml文件并读取,返回一个InputStream的对象           InputStream is =Resources.getResourceAsStream("mybatis-config.xml");           //通过这个输入流来构建一个SqlSessionFactory对象           //通过上面的输入流传递给builder对象进行解析           sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);       } catch (IOException e) {           throw new RuntimeException(e.getMessage());       }   }

/**    * 提供一个获取SqlSession的方法    *    * */   public static SqlSession getSqlSession(){       //openSession方法构建一个sqlSession对象        return sqlSessionFactory.openSession();   }    public static SqlSession getSqlSession(Boolean falg){        //openSession方法构建一个sqlSession对象        return sqlSessionFactory.openSession(falg);    }

}
3.在传统的方法中,我们都是用dao方法来实现对数据库的增删改查的,而mybatis中通常我们会将dao类变成一个接口类,接口中声明对数据库的操作的抽象方法,用一个子类来继承并实现dao类接口所有的方法

接口类:UserDaoInf

package edu.nf.mybatis.dao;

import edu.nf.mybatis.entity.Users;

import java.util.List;

/** * @Author lance * */public interface UserDaoInf {    /**     * 添加用户     */     void saveUser(Users users);

/**     * 修改用户     */     void updateUser(Users users);

/**     * 删除用户     */    void deleteUser(String uid);

/**     * 根据ID查询某条用户数据     */    Users findUsersById(String uid);

/**     * 查询所有的用户信息,保存在一个集合中     */    List<Users> findAll();}

接口实现类:UserDaoImpl
package edu.nf.mybatis.dao.impl;

import edu.nf.mybatis.dao.UserDaoInf;import edu.nf.mybatis.entity.Users;import edu.nf.mybatis.tools.MyBatisUtil;import org.apache.ibatis.session.SqlSession;

import java.util.List;

/** * 描述: * 接口实现类 * @author lance * @create 2018-09-10 14:13 */public class UserDaoImpl implements UserDaoInf {

@Override    public void saveUser(Users user) {        //获取SqlSession实例        SqlSession session = MyBatisUtil.getSqlSession();        try {            //方式一:            //获取相应的Mapper,getMapper方法需要传递一个接口的对象            //并且返回的这个Mapper对象同样是实现了UserDao接口            //这个Mapper对象最核心的作用就是和mybatis的mapper映射配置文件进行关联            UserDaoInf dao = session.getMapper(UserDaoInf.class);            //调用这个实现类的saveUser方法将数据保存在数据库中            dao.saveUser(user);            //方式二:            //bint row = session.insert("edu.nf.mybatis.entity.saveUser",user);            //手动提交事务            session.commit();        } catch (Exception e) {            e.printStackTrace();            //在异常加回滚事务            session.rollback();        }finally {            session.close();        }    }

@Override    public void updateUser(Users users) {        SqlSession session = MyBatisUtil.getSqlSession();        try{            UserDaoInf dao = session.getMapper(UserDaoInf.class);            dao.updateUser(users);            session.commit();        }catch (Exception e){            e.printStackTrace();            session.rollback();        }finally {            session.close();        }    }

@Override    public void deleteUser(String uid) {        SqlSession session = MyBatisUtil.getSqlSession();        try{            UserDaoInf dao = session.getMapper(UserDaoInf.class);            dao.deleteUser(uid);            session.commit();        }catch (Exception e){            e.printStackTrace();            session.rollback();        }finally {            session.close();        }    }

@Override    public Users findUsersById(String uid) {        SqlSession session = MyBatisUtil.getSqlSession();        Users user=null;        try {            UserDaoInf dao = session.getMapper(UserDaoInf.class);            user = dao.findUsersById(uid);        } catch (Exception e) {            throw new RuntimeException(e.getMessage());        }finally {            session.close();        }        return user;    }

@Override    public List<Users> findAll() {        List<Users> list = null;        SqlSession session = MyBatisUtil.getSqlSession();        try {            UserDaoInf dao = session.getMapper(UserDaoInf.class);            list = dao.findAll();        } catch (Exception e) {            throw new RuntimeException(e.getMessage());        }        return list;    }}

测试类,以下方法都经过测试,没有问题

package eud.nf.mybatis.dao.test;

import edu.nf.mybatis.dao.UserDaoInf;import edu.nf.mybatis.dao.impl.UserDaoImpl;import edu.nf.mybatis.entity.Users;import org.junit.Test;

import java.util.List;

/** * 描述: * * @author lance * @create 2018-09-10 15:15 */public class UserDaoImplTest {    @Test    public void testSaveUsers(){        Users users = new Users();        users.setUid("1010");        users.setUserName("test6");        UserDaoInf dao = new UserDaoImpl();        dao.saveUser(users);    }    @Test    public void testUpdateUsers(){        Users users = new Users();        users.setUid("1006");        users.setUserName("admin");        UserDaoInf dao = new UserDaoImpl();        dao.updateUser(users);    }    @Test    public void testDeleteUsers(){        UserDaoInf dao = new UserDaoImpl();        dao.deleteUser("1010");    }    @Test    public void testFindUsersById(){        UserDaoInf dao = new UserDaoImpl();        Users user = dao.findUsersById("1001");        System.out.println(user.getUid());        System.out.println(user.getUserName());    }    @Test    public  void testFindAll(){        UserDaoInf dao = new UserDaoImpl();        List<Users> list = dao.findAll();        for (Users users : list) {            System.out.println(users);        }    }

}好啦,这就是mybatis的一个简单使用教程啦


原文地址:https://www.cnblogs.com/gepuginy/p/9631074.html

时间: 2024-08-04 19:52:50

MyBatis框架入门小案例(关于用mybatis框架对数据库的增删改查)的相关文章

TP框架中 数据库的增删改查

框架会用到数据库的内容,这一篇就是关于数据库的增删改查. 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作, 想要操作数据库,第一步必然是要:链接数据库 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件 我这里是这样的文件路径 (2)打开这个config.php文件,然后找到父类配置文件convention.php文件,将关于"数据库"的部分复制粘贴到config.php配置文件中(父类的conv

MVC + EF 框架 对数据库做增删改查

这几天一直在看MVC 开发模式,其中借助EF框架对数据库进行 增删改查操作 现在就小小的总结一下吧 在使用EF操作数据库时,会首先添加 ADO.NET数据模型,这时,会为我们添加一个数据上下文类,使用这个类的对象可以对数据库做任何操作.所以在使用EF操作数据库之前 需要创建数据上下文对象. MyDatabaseEntities mde = new MyDatabaseEntities(); 1.使用EF 对数据库 做增加操作 1.1 创建一个需要被操作数据表的对象(一般来说 ,一张表就是一个实体

用MyBatis进行数据库的增删改查

前提是MyBatis环境部署好了,参考地址: https://www.cnblogs.com/package-java/p/10316536.html 为了方便演示,我提前在数据库插入了数据方便查询 1. 创建新的数据库`tedu_ums`:      CREATE DATABASE tedu_ums;  2. 在新数据库中创建数据表`t_user`,表中至少包含id, username, password, age, phone, email这6个属性:       USE tedu_ums;

Mybatis学习笔记(二) 之实现数据库的增删改查

开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载.首先建立一个名字为 MyBaits 的 dynamic web project 1. 可以创建maven项目,依赖的包mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar <!-- mybatis包 --> <depe

MyBatis对数据库的增删改查操作,简单示例

之前一直实用Hibernate进行开发,最近公司在使用Mybatis,根据网上的示例,做了一个简单的Demo,以便日后复习 总体结构如下图 首先是创建一个工程,然后导入两个jar包,然后编写mybatis的jdbc配置文件Configuration.xml Configuration.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-/

使用Mysql数据库完成增删改查综合案例(JSP页面)

本案例页面如下: 这是index.jsp页面(包含模糊查询) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import=" java.sql.* "%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01

YII框架数据库的增删改查

[php] //添加 Yii::app()->db->createCommand()->insert('tbl_user', array( 'username' => 'zhangsan', 'email' => '[email protected]')); //使用user model添加数据 $user = new Users(); $user->setAttributes(array( 'username' => 'user1', 'email' =>

ci框架——数据库(增删改查)

1:配置数据库(application/config/database.php)修改 $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => '数据库的用户名', 'password' => '数据库密码', 'database' => '数据表名', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' =>

spring框架学习之--数据库操作增删改查

基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 1 consult.jdbc.driverClassName=com.mysql.jdbc.Driver 2 consult.jdbc.url=jdbc:mysql://xxxxxxxx:3307/consult_summer?useUnicode=true&characterEncoding=utf-8&am