写在前头
由于之前入门直接上手的是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();
}
}