MyBatis 使用(上)

写在前头


由于之前入门直接上手的是Spring boot,学习一段时间后,项目也成功搭好跑了起来,感觉总缺了点什么,后来想想,是spring boot 中的高度自动配置化,将诸多配置封装了起来,所以最近开始学习SSM框架,本文即是学习mybatis 框架的一篇入门文章,本文主要参考了郭炳宇的《移动互联后台设计与开发》,基于书本,在过程中加入了一些自己的思路与分析。

1.新建项目搭建环境

(1)建Dynamic Web Project
勾选 web.xml
这里写图片描述
(2)创建mybatis主配置文件,引入相关jar包,配置properties文件

  • jar包复制到WEB-INF/lib下
  • db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/myTest?useUnicode=true%characterEncoding=UTF-8//指定本地数据库等配置
user=root
pwd=自己的密码
  • 主配置文件
<?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配置文件 -->
<properties resource="db.properties"/>
<!-- 配置二级缓存 -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<environments default="environment">
<environment id="environment">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!-- 引入db -->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${pwd}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 这里容易出错 -->
<mapper resource="com/hanzhen/edu/ssmtest1/sql/MemberSqlMap.xml"/>
</mappers>
</configuration>

以上放到src中即可
(3)创建包
在eclipse建立包结构时包结构视图要改下
创建包时要注意结构
这里写图片描述

这里写图片描述

2.编写实体类

(1)准备工作
没有按照之前的自动生成数据库与表,由于最近在学习mysql 语句所以,全部数据库数据表采用sql 语句进行创建
这里写图片描述

mysql> create table ms_member (
     member_id int not null auto_increment,
     uname varchar(50) not null,
     password varchar(50) not null,
     email varchar(50) not null,
     sex smallint,
     mobile varchar(50),
     regtime timestamp default current_timestamp,
     lastlogin timestamp null,
     image varchar(255) null,
     primary key(member_id)
     )engine=InnoDB default charset=utf8;

创建表结构如下
这里写图片描述
(2)entity包下创建实体类

package com.hanzhen.edu.ssmtest1.entity;

import java.sql.Timestamp;

public class Member {
    private Integer member_id;
    private String uname;
    private String password;
    private String email;
    private Integer sex;
    private String mobile;
    private Timestamp regtime;
    private Timestamp lastlogin;
    private String image;//头像

    public Integer getMember_id() {
        return member_id;
    }
    public void setMember_id(Integer member_id) {
        this.member_id = member_id;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Integer getSex() {
        return sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public Timestamp getRegtime() {
        return regtime;
    }
    public void setRegtime(Timestamp regtime) {
        this.regtime = regtime;
    }
    public Timestamp getLastlogin() {
        return lastlogin;
    }
    public void setLastlogin(Timestamp lastlogin) {
        this.lastlogin = lastlogin;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }

   public String toString() {

       return "Member[member_id="+member_id+",uname="+uname+
               ",password="+password+",email="+email+",sex="+
               ",mobile="+mobile+",regtime="+regtime+
               ",lastlogin="+lastlogin+",image="+image+"]";
   }


}

3.定义SQL语句

在sql包下创建MemberSqlMap.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.hanzhen.edu.ssmtest1.dao.MemberDao">
<!-- 缓存配置 -->

<cache eviction="LRU" flushInterval="30000" size="512" readOnly="true" />
<!-- 插入数据 -->
<insert id="save"
parameterType="com.hanzhen.edu.ssmtest1.entity.Member"
useGeneratedKeys="true" keyProperty="member_id" >
insert into ms_member(member_id,uname,password,email,
sex,mobile,regtime,lastlogin,image)
values(#{member_id},#{uname},#{password},#{email},
#{sex},#{mobile},#{regtime},#{lastlogin},#{image})
</insert>
<!-- 查询元素 -->
<select id="findAll"
resultType="com.hanzhen.edu.ssmtest1.entity.Member">
select * from ms_member
</select>
<!-- 更新元素 -->
<update id="updatePwdById" parameterType="map">
udate ms_member set password=#{password}
where member_id=#{member_id}
</update>
<delete id="deleteById" parameterType="int">
delete from ms_member where member_id=#{member_id}
</delete>
</mapper>

4.构建SqlSession

package com.hanzhen.edu.ssmtest1.util;


import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {
    public static SqlSession getSqlSession() {
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        ClassLoader loader=MybatisUtil.class.getClassLoader();
        InputStream inStream=loader.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory factory=builder.build(inStream);
        SqlSession session=factory.openSession();
        return session;

    }
    public static void main(String[] ars) {
        SqlSession session=MybatisUtil.getSqlSession();
        System.out.println(session);
        session.close();
    }

}

5.测试插入

package com.hanzhen.edu.ssmtest1.test;

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

import com.hanzhen.edu.ssmtest1.entity.Member;
import com.hanzhen.edu.ssmtest1.util.MybatisUtil;

public class TestMember {
    @Test
    public void testInsert() {
        SqlSession session=MybatisUtil.getSqlSession();
        Member member=new Member();
        member.setMember_id(null);
        member.setUname("张三");
        member.setPassword("123456");
        member.setEmail("zs@qq.com");
        member.setSex(0);
        member.setRegtime(null);
        member.setLastlogin(null);
        member.setImage("");
        session.insert("save",member);
        session.commit();
        session.close();
    }

}

6.测试结果

这里写图片描述

7.源码及其相关资源

https://download.csdn.net/download/hanzhenbushihu/10488533

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值