美文网首页
如何使用MyBatis

如何使用MyBatis

作者: flemingchen | 来源:发表于2017-11-21 16:36 被阅读29次

介绍

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。


MyBatis

下载

mybatis-3.4.5
mysql-jdbc-connector
如果你使用的Maven构建可以直接配置dependency。

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

配置

  • conf.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>
    <properties resource="db.properties"/><!-- 使用属性文件 -->
    <typeAliases><!-- 为User取别名 -->
        <typeAlias type="com.fleming.domain.User" alias="_User"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <!-- JDBC配置 -->
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${name}" />
                <property name="password" value="${pass}" />
            </dataSource>
        </environment>
    </environments>
</configuration>
  • 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="com.fleming.mapping.userMapper">
    <select id="getUser" parameterType="int" resultType="_User">
        select * from users where id=#{id}
    </select>
    <insert id="insertUser" parameterType="_User">
        insert into users(name,age) values(#{name},#{age})
    </insert>
    <delete id="delUser" parameterType="int">
        delete from users where id=#{id}
    </delete>
    <update id="updateUser" parameterType="_User">
        update users set name=#{name},age=#{age} where id=#{id}
    </update>
    <select id="getAllUsers" parameterType="_User">
        select * from users
    </select>
</mapper>
  • 利用注解编写接口UserMapperI.java
public interface UserMapperI {
    //使用@Insert注解指明add方法要执行的SQL
    @Insert("insert into users(name, age) values(#{name}, #{age})")
    public int add(User user);
    
    //使用@Delete注解指明deleteById方法要执行的SQL
    @Delete("delete from users where id=#{id}")
    public int deleteById(int id);
    
    //使用@Update注解指明update方法要执行的SQL
    @Update("update users set name=#{name},age=#{age} where id=#{id}")
    public int update(User user);
    
    //使用@Select注解指明getById方法要执行的SQL
    @Select("select * from users where id=#{id}")
    public User getById(int id);
    
    //使用@Select注解指明getAll方法要执行的SQL
    @Select("select * from users")
    public List<User> getAll();
}

使用注解可以方便调用,然后将mapper文件配置到conf.xml中

<mappers>
    <mapper resource="com/fleming/mapping/userMapper.xml" />
    <mapper class="com.fleming.mapping.UserMapperI" />
</mappers>

测试

-- ----------------------------
--  Table structure for `users`
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records 
-- ----------------------------
INSERT INTO `users` VALUES ('1','独孤求败','27'), ('2','独孤求败','27'), ('3','独孤求败','20');
public class MybatisTest {
    @Test
    public void testGetAll(){
        String resource = "conf.xml";
        InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);    
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的标识字符串,
         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
         * getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
         */
        UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
        //执行查询操作,将查询结果自动封装成List<User>返回
        List<User> lstUsers = mapper.getAll();
        //使用SqlSession执行完SQL之后需要关闭SqlSession
        sqlSession.close();
        for(User user: lstUsers) {
            System.out.println(user);
        }
    }   
}

基本入门操作,留作记录。

相关文章

  • mybatis整体认识

    本片博文从传统jdbc方式引出mybatis,进而讲解mybatis如何使用。 1.jdbc使用方式 (此处仅列出...

  • Mybatis源码研读(一)—— XML解析

    走进Mybatis 上文中简单的介绍过了Mybatis的使用。本篇文章将介绍Mybatis如何解析XML 组件: ...

  • SpringBoot使用Mybatis-Generator

    本文介绍如何将Maven和Mybatis-Generator配合使用。 简介 Mybatis-Generator是...

  • Mybatis经典面试题总结

    陌上花开,可缓缓归矣 一、Mybatis 是如何进行分页的? Mybatis 使用 RowBounds 对象进行分...

  • Mybatis-PageHelper的简单使用

    https://github.com/pagehelper/Mybatis-PageHelper如何使用Mybat...

  • 如何使用MyBatis

    介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几...

  • 如何使用mybatis

    如果你的数据表有100列(例如你的考研报名信息= =),这时如果你还用sql语言中的insert来插入一行数据,那...

  • 第10讲_MyBatis_注解基本用法

    MyBatis注解提出,可以说是非常好简化了MyBatis配置文件的使用。下面我们简单地来告诉大家如何使用MyBa...

  • JPA和MyBatis如何进行技术选型

    背景 在我们平时的项目中,大家都知道可以使用JPA或者Mybatis作为ORM 层。对JPA和Mybatis如何进...

  • 文档

    如何使用 数据库:mysql 后端框架:spring + springMVC + MyBatis 前端框架: vu...

网友评论

      本文标题:如何使用MyBatis

      本文链接:https://www.haomeiwen.com/subject/shswvxtx.html