【MyBatis学习01】一个简单入门实例

本文博客地址:http://blog.csdn.net/soonfly/article/details/63323701 (转载请注明出处)
mybatis框架是一个持久层框架,它提供一种“半自动化”的ORM实现。mybatis主要关注POJO(Plain Old Java Objects,普通的Java 对象)与SQL之间的映射关系,对于SQL语句,需要自己编写。 Mybatis的使用非常简单,下面通过一个小示例来入门mybatis 。

一、准备工作:

1、创建java项目
这里我们选择Dynamic Web Project(动态web项目),当然也可以选择普通的Java Project。
这里写图片描述

在创建的过程中,我们给source folder增加一个config目录用于放置配置文件。在开发中,要养成归类的习惯。
这里写图片描述

2、创建Mysql库、表
创建库

CREATE DATABASE `tangwenmingdb` /*!40100 DEFAULT CHARACTER SET utf8 */

tangwenmingdb中创建分类用户表user

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `salt` varchar(50) DEFAULT NULL,
  `sex` smallint(1) DEFAULT NULL COMMENT '0-未知 1-男 2-女',
  `address` varchar(50) DEFAULT NULL,
  `cellphone` varchar(30) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

二、在Java项目中导入mybatis相关包以及mysql连接组件

mybatis需要jar包:mybatis-3.3.0.jar和几个依赖包,全部导入到工程中即可
mysql驱动jar包:mysql-connector-java-5.1.26-bin.jar
日志记录jar包:log4j-core-2.2.jar和依赖包
记得拷贝log4j的配置文件log4j.properties至config目录下
(相关包下载请点击)

这里写图片描述

三、创建mybatis配置文件sqlMapConfig.xml及数据库连接配置文件

这里写图片描述
db.properties内容:

url=jdbc:mysql://localhost:3306/tangwenmingdb
user=root
password=yjcsxdl
driverClass=com.mysql.jdbc.Driver

sqlMapConfig.xml内容由三部分组成:
1、typeAliases:设置pojo别名
2、配置mybatis运行环境
3、加载mapper映射

<?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>

    <!-- 引入外部db连接配置文件 -->
    <properties resource="db.properties"></properties>

    <!-- 1、typeAliases:设置pojo别名 -->
    <typeAliases>
        <!-- 方式1:针对单个别名的定义。type:类型的路径; alias:别名 -->
        <!-- <typeAlias type="twm.mybatisdemo.pojo.User" alias="User"/> -->

        <!-- 方式2:自动扫描,将JAVA类的类名作为类的类别名 -->
        <package name="twm.mybatisdemo.pojo" />
    </typeAliases>

    <!-- 2、配置mybatis运行环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">

            </transactionManager>
            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driverClass}" />
                <property name="url" value="${url}" />
                <property name="username" value="${user}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- 3、加载mapper映射 -->
    <!-- 第一种方式: 一个个指定接口文件及配置文件位置
    <mappers>
        <mapper resource="twm/mybatisdemo/mapper/User.xml" />
        <mapper class="twm.mybatisdemo.mapper.UserMapper"/> 
    </mappers> -->
    <!-- 第二种方式: 指定目录加载,要求接口文件与xml配置在同一个目录下 -->
     <mappers>
        <package name="twm/mybatisdemo/mapper" />
    </mappers> 
</configuration>

四、创建POJO,即:数据实体对象

package twm.mybatisdemo.pojo;

public class User {
    Integer id;
    String username;
    String password;
    String salt;
    Short sex;
    String address;
    String cellphone;
    String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }

    public String getSalt() {
        return salt;
    }

    public void setSalt(String salt) {
        this.salt = salt;
    }

    public Short getSex() {
        return sex;
    }

    public void setSex(Short sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCellphone() {
        return cellphone;
    }

    public void setCellphone(String cellphone) {
        this.cellphone = cellphone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public User() {

    }

    public User(String username, String password, String salt,
            Short sex, String address, String cellphone, String email) {
        super();
        this.username = username;
        this.password = password;
        this.salt = salt;
        this.sex = sex;
        this.address = address;
        this.cellphone = cellphone;
        this.email = email;
    }

    @Override
    public String toString() {
        return "姓名:"+username+",性别:"+sex+",地址:"+address+",邮箱:"+email;
    }

}

五、创建映射器接口UserMapper.java及映射器配置文件UserMapper.xml

映射器接口文件 UserMapper.java:

package twm.mybatisdemo.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import twm.mybatisdemo.pojo.User;

public interface UserMapper {
    /**
     * 新增用戶
     * 
     * @param user
     * @return
     * @throws Exception
     */
    public int insert(User user) throws Exception;

    /**
     * 修改用戶
     * 
     * @param user
     * @param id
     * @return
     * @throws Exception
     */
    public int update(User user) throws Exception;

    /**
     * 刪除用戶
     * 
     * @param id
     * @return
     * @throws Exception
     */
    public int delete(int id) throws Exception;

    /**
     * 根据id查询用户信息
     * 
     * @param id
     * @return
     * @throws Exception
     */
    public User selectById(int id) throws Exception;

    /**
     * 查询所有的用户信息
     * 
     * @return
     * @throws Exception
     */
    public List<User> selectAll() throws Exception;

    /**
     * 根据用户名模糊查询用户
     * @param searchkey
     * @return
     * @throws Exception
     */
    public List<User> findByName(@Param(value="searchkey") String searchkey) throws Exception;
}

映射配置文件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="twm.mybatisdemo.mapper.UserMapper">
    <!-- 自定义返回结果集 -->
    <resultMap id="userMap" type="twm.mybatisdemo.pojo.User">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result property="username" column="username" javaType="String" jdbcType="VARCHAR"></result>
        <result property="password" column="password" javaType="String" jdbcType="VARCHAR"></result>
        <result property="salt" column="salt" javaType="String" jdbcType="VARCHAR"></result>
        <result property="sex" column="sex" javaType="Short" jdbcType="INTEGER"></result>
        <result property="address" column="address" javaType="String" jdbcType="VARCHAR"></result>
        <result property="cellphone" column="cellphone" javaType="String" jdbcType="VARCHAR"></result>
        <result property="email" column="email" javaType="String" jdbcType="VARCHAR"></result>
    </resultMap>

    <!-- useGeneratedKeys 取值范围true|false 默认值是:false。 
    含义:设置是否使用JDBC的getGenereatedKeys方法(如:Mysql自增)获取主键并赋值到keyProperty设置的模型属性中 -->
    <!-- #{}:表示一个占位符,用来接收输入参数的。 -->
    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        insert into user (username,password,salt,sex,address,cellphone,email) values
        (#{username},#{password},#{salt},#{sex},#{address},#{cellphone},#{email})
    </insert>

    <update id="update">
        update user set
        username=#{username},password=#{password},salt=#{salt},sex=#{sex},address=#{address},
        cellphone=#{cellphone},email=#{email}
         where id=#{id}
    </update>

    <delete id="delete" parameterType="int">
        delete from user where id=#{id}
    </delete>

    <select id="selectById" parameterType="int" resultMap="userMap">
        select * from user where id=#{id}
    </select>

    <select id="selectAll" resultMap="userMap">
        select * from user
    </select>
</mapper>

六、创建生成Sqlsession的辅助类

package twm.mybatisdemo.Assist;

import java.io.Reader;
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 SqlSessionAssist {

    public static SqlSessionFactory sessionFactory;
    static {
        try {
            Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
            // InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSession() {
        return sessionFactory.openSession();
    }
}

七、调用 Run as Java Application

public class firstTest {
    public static void main(String[] args) throws Exception {
        SqlSession session = SqlSessionAssist.getSession();
        //session.select("select", 38);
        /*获取user O/R映射关系*/
        UserMapper usermapper=session.getMapper(UserMapper.class);
        User aPerson;

        /*1、增加单条记录*/
        aPerson=new User("郭灭","123456", "aX3Qcs", (short)1, "济南云龙客栈", "18911110000", "guom@gulong.com");
        /*insert返回操作记录的数量,插入一条记录即为:1。*/
        usermapper.insert(aPerson);//接口映射方式
        //session.insert("insert",aPerson);//直接采用DAO方式
        System.out.println("1、增加单条记录:插入用户["+aPerson+"]成功。");

        /*2、增加单条记录,并返回插入ID*/
        aPerson=new User("高天仪","123456", "aX3Qcs", (short)2, "北冥山庄", "18911110000", "gaotianyi@gulong.com");
        /*xml配置了useGeneratedKeys="true" keyProperty="id",则会将插入后的主键填充到参数里的user对象的主键中。
         *aPerson.getId()返回插入记录的主键*/
        usermapper.insert(aPerson);
        System.out.println("2、增加单条记录,并返回插入ID:插入用户["+aPerson+"]成功。ID:"+aPerson.getId());
        session.commit();/*提交*/

        /*3、读取单条记录*/
        User tmpuser=usermapper.selectById(aPerson.getId());//接口映射方式
        //User tmpuser=session.selectOne("selectById", aPerson.getId());//直接采用DAO方式
        System.out.println("3、读取单条记录:"+tmpuser+"。ID:"+tmpuser.getId());

        /*4、修改单条记录*/
        tmpuser.setAddress("锦绣山庄");
        tmpuser.setUsername("三笑将军");
        usermapper.update(tmpuser);
        session.commit();/*提交*/
        System.out.println("4、修改单条记录:"+tmpuser+"。ID:"+tmpuser.getId());

        /*5、删除单条记录*/
        usermapper.delete(tmpuser.getId());
        session.commit();/*提交*/
        System.out.println("5、删除单条记录:"+tmpuser);

        /*6、查询记录*/
        List<User>  userList=usermapper.findByName("灭");
        System.out.println("6、查询记录:共找到"+userList.size()+"个用户");

        /*End:关闭mybatis会话*/
        session.close();
    }

}

运行后输出:

1、增加单条记录:插入用户[姓名:郭灭,性别:1,地址:济南云龙客栈,邮箱:guom@gulong.com]成功。
2、增加单条记录,并返回插入ID:插入用户[姓名:高天仪,性别:2,地址:北冥山庄,邮箱:gaotianyi@gulong.com]成功。ID:52
3、读取单条记录:姓名:高天仪,性别:2,地址:北冥山庄,邮箱:gaotianyi@gulong.com。ID:52
4、修改单条记录:姓名:三笑将军,性别:2,地址:锦绣山庄,邮箱:gaotianyi@gulong.com。ID:52
5、删除单条记录:姓名:三笑将军,性别:2,地址:锦绣山庄,邮箱:gaotianyi@gulong.com 6、查询记录:共找到1个用户

至此我们用mybatis完成了基础的增删改查操作。

本文博客地址:http://blog.csdn.net/soonfly/article/details/63323701 (转载请注明出处)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值