版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。觉得此文有用的,不嫌麻烦的,就留个言呐,或者点个赞呐,要是嫌麻烦呢,也麻烦点个赞嘛 https://blog.csdn.net/qq_40147863/article/details/86475767
SSM 实训笔记 -13- MyBatis 入门实例,快速实现增删改查(maven)
本系列文章一直没出现 Mybatis,一步一步学习,今天整理 MyBatis 入门实例
本篇内容:
(1)使用 MyBatis 快速实现增删改查
(2)使用 MySQL 数据库
(3)小项目 github 地址:
https://github.com/xpwi/mybatistest
一、搭建数据库
(1)我们还采用之前的数据库,只需要这样一个表:
(2)插入一些数据:
二、创建 Maven 项目,及配置
(1)新建项目:
(2)选择组名:
(3)项目名,本地位置:
(4)右下角有一个提示,点击右边的选项,自动导入:
(5)pom.xml 文件配置:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
(6)创建 resources/jdbcConfig.properties 文件:
并配置自己的数据库信息
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC
username=root
password=密码
(7)创建 mybatisConfig.xml 文件:
- 注释非常详细
<?xml version="1.0" encoding="UTF-8" ?>
<!--命名空间在 MyBatis 官网上可以找到-->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--加载 jdbcConfig.properties 是 jdbc 配置文件-->
<properties resource="jdbcConfig.properties"> </properties>
<!--default 的值要和下面的 id 一致-->
<environments default="mysql">
<environment id="mysql">
<!--这里基本都是使用 JDBC -->
<transactionManager type="JDBC"></transactionManager>
<!--使用 POOLED-->
<dataSource type="POOLED">
<!--name 的值和 jdbc Template 有些不一致, 记住就好-->
<!--然后以变量的形式加载 jdbcConfig.properties 文件中的配置,当然也可以直接在这里写-->
<property name="driver" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</dataSource>
</environment>
</environments>
<!--这里要配置 mapper 文件-->
<mappers>
<!--该文件用来定义 SQL 语句, 对数据库的操作-->
<!--这里可以使用插件根据数据库字段自动生成,详见:https://blog.csdn.net/qq_40147863/article/details/85886166-->
<!--当然也只有直接在这里写,但是一般比较多,都是另写文件,这里引入文件,不再同一目录需要加上路径-->
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
三、编写测试类
(1)创建 src/main/java/com/xpwi/pojo/User.java 文件:
- !要对应数据库中相应字段名
package com.xpwi.pojo;
//本文件可使用插件自动生成,详见:https://blog.csdn.net/qq_40147863/article/details/85886166
//实体类中的属性对应数据库中的字段, 再加上 get set 方法
public class User {
private int id;
private String uname;
private String upwd;
private String lastLoginTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public String getLastLoginTime() {
return lastLoginTime;
}
public void setLastLoginTime(String lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
private String role;
}
(2)回到 resources 目录下,创建 UserMapper.xml 文件:
- 定义 SQL 语句
- 可以使用插件自动生成
<?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">
<!--本文件可使用插件自动生成,详见:https://blog.csdn.net/qq_40147863/article/details/85886166-->
<!--这里只需要下 mapper 标签-->
<mapper namespace="com.xpwi.mapper.UserMapper">
<!--查询表中所有信息-->
<!--返回类型 com.xpwi.pojo.User 实体类,也可以一并自动生成-->
<select id="findAll" resultType="com.xpwi.pojo.User">
select * from password
</select>
<!--根据用户 id 查询信息-->
<select id="findUserById" resultType="com.xpwi.pojo.User" parameterType="int">
select * from password where id=#{id}
</select>
<!--插入数据-->
<insert id="insert" parameterType="com.xpwi.pojo.User">
insert into password(uname,upwd,role) values(#{uname},#{upwd},#{role})
</insert>
<!--更新修改数据-->
<update id="update" parameterType="com.xpwi.pojo.User">
update password set uname=#{uname},upwd=#{upwd},role=#{role} where id=#{id}
</update>
<!--根据 id 删除数据-->
<delete id="delete" parameterType="int">
delete from password where id=#{id}
</delete>
</mapper>
(3)编写测试类:
import com.xpwi.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class TestMyBatis {
@Test
public void update(){
InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
SqlSession sqlSession = sessionFactory.openSession();
String str = "com.xpwi.mapper.UserMapper.update";
User user = new User();
user.setId(30);
user.setUname("新修改的");
user.setUpwd("987654321");
user.setRole("student");
try {
int update = sqlSession.update(str, user);
sqlSession.commit();
System.out.println("更新 "+update+"条记录");
}catch (Exception e){
sqlSession.rollback();
}
}
// @Test
public void insert(){
InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
SqlSession sqlSession = sessionFactory.openSession();
String str = "com.xpwi.mapper.UserMapper.insert";
User user = new User();
user.setUname("新添加的");
user.setUpwd("987654321");
user.setRole("student");
try {
int insert = sqlSession.insert(str, user);
sqlSession.commit();
System.out.println("添加 "+insert+"条记录");
}catch (Exception e){
sqlSession.rollback();
}
}
// @Test
public void delete(){
InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
SqlSession sqlSession = sessionFactory.openSession();
String str = "com.xpwi.mapper.UserMapper.delete";
int delete = sqlSession.delete(str,32);
sqlSession.commit();
System.out.println("删除 "+delete+"条记录");
}
// @Test
public void findAll(){
InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
SqlSession sqlSession = sessionFactory.openSession();
String str = "com.xpwi.mapper.UserMapper.findAll";
List<Object> objects = sqlSession.selectList(str);
for (Object obj:objects) {
User user= (User) obj;
System.out.println(user.getUname());
System.out.println(user.getUpwd());
System.out.println("------------");
}
}
// @Test
public void findUserById() {
InputStream rs = TestMyBatis.class.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(rs);
SqlSession sqlSession = sessionFactory.openSession();
String str = "com.xpwi.mapper.UserMapper.findUserById";
User o = (User)sqlSession.selectOne(str,1);
System.out.println(o.getUname());
}
}
四、优化
本篇还可以优化,就是实体类,及 Mapper 的 xml 文件,都可以使用 MyBatis-generator 插件自动生成,使用方法详见:mybatis-generator 详细配置及使用,爬坑记录,本篇入门实例,采用手写,所以说还是非常的快速好用的
更多文章链接
支持博主
我正在参加 CSDN 2018 年博客之星评选,希望大家能支持我,
我是【No. 001】号 肖朋伟 ,感谢大家宝贵的一票 ^_^/
投票地址:https://bss.csdn.net/m/topic/blog_star2018/index