项目结构如下:

1、数据库建表

  表名:user

  结构:

  

  内容:

2、pom.xml文件更新如下:

注:其中build部分尤其需要重视

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId>
<artifactId>Mybatis_test</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mybatis01</module>
</modules> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>

<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build> </project>

3、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">
<!--命名空间,绑定一个Dao-->
<mapper namespace="com.demo.dao.Userdao">
<!--查询语句-->
<select id="getUserList" resultType="com.demo.pojo.User">
select * from calss.user
</select>
</mapper>

4、测试类

直接上代码了

package com.demo.dao;

import com.demo.pojo.User;
import com.demo.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; /**
* @author June
* @date 2022/1/7 14:16
*/
public class UserDaoTest {
@Test
public void test()
{
//第一步:获取sqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
try {
//getMapper 方式一
Userdao userdao=sqlSession.getMapper(Userdao.class);
List<User> userList=userdao.getUserList();
//方式二
//List<User> userList1=sqlSession.selectList("com.demo.dao.Userdao.getUserList"); for (User user:userList) {
System.out.println(user.getId()+user.getName()+user.getPwd());
} }catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
}

测试结果如下:

终版,完善后(即添加了CRUD后)的相关代码如下:

Userdao.java

package com.demo.dao;

import com.demo.pojo.User;

import java.util.List;

/**
* @author June
* @date 2022/1/6 17:44
*/
public interface Userdao {
//获取全部用户
List<User> getUserList();
//根据id查询用户
User getUserbyid(int id);
//insert 插入一个用户
int addUser(User user);
//update用户
int updateUser(User user);
//删除一个用户
int deleteUser(int id);
}

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">
<!--命名空间,绑定一个Dao-->
<mapper namespace="com.demo.dao.Userdao">
<!--查询语句-->
<select id="getUserList" resultType="com.demo.pojo.User">
select * from calss.user
</select> <select id="getUserbyid" parameterType="int" resultType="com.demo.pojo.User">
select * from calss.user where id = #{id}
</select> <insert id="addUser" parameterType="com.demo.pojo.User">
insert into calss.user (id,name,pwd) values (#{id},#{name},#{pwd});
</insert> <update id="updateUser" parameterType="com.demo.pojo.User">
update calss.user set name = #{name},pwd = #{pwd} where id = #{id};
</update> <delete id="deleteUser" parameterType="int">
delete from calss.user where id = #{id};
</delete>
</mapper>

UserDaoTest.java

package com.demo.dao;

import com.demo.pojo.User;
import com.demo.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; /**
* @author June
* @date 2022/1/7 14:16
*/
public class UserDaoTest {
//查询所有用户
@Test
public void test() {
//第一步:获取sqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
try {
//getMapper 方式一
Userdao userdao=sqlSession.getMapper(Userdao.class);
List<User> userList=userdao.getUserList();
//方式二
//List<User> userList1=sqlSession.selectList("com.demo.dao.Userdao.getUserList"); for (User user:userList) {
System.out.println(user.getId()+user.getName()+user.getPwd());
} }catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
//根据id查询用户
@Test
public void getUserbyid() {
//第一步:获取sqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
try {
//getMapper 方式一
Userdao userdao=sqlSession.getMapper(Userdao.class);
User user=userdao.getUserbyid(1);
//方式二
//List<User> userList1=sqlSession.selectList("com.demo.dao.Userdao.getUserList");
System.out.println(user.getId()+user.getName()+user.getPwd()); }catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
//添加一个用户
@Test
public void addUser() {
//第一步:获取sqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
try {
//getMapper 方式一
Userdao userdao=sqlSession.getMapper(Userdao.class);
int number = userdao.addUser(new User(3,"信","333"));
if(number!=0){
System.out.println("插入成功!!!");
}
//提交事务
sqlSession.commit();
//方式二
//List<User> userList1=sqlSession.selectList("com.demo.dao.Userdao.getUserList");
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
//修改某个用户
@Test
public void updateUser() {
//第一步:获取sqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
try {
//getMapper 方式一
Userdao userdao=sqlSession.getMapper(Userdao.class);
int number = userdao.updateUser(new User(3,"sndi","323243"));
if(number!=0){
System.out.println("修改成功!!!");
}
//提交事务
sqlSession.commit();
//方式二
//List<User> userList1=sqlSession.selectList("com.demo.dao.Userdao.getUserList");
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
//删除某个用户
@Test
public void deleteUser() {
//第一步:获取sqlSession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
try {
//getMapper 方式一
Userdao userdao=sqlSession.getMapper(Userdao.class);
int number = userdao.deleteUser(3);
if(number!=0){
System.out.println("删除成功!!!");
}
//提交事务
sqlSession.commit();
//方式二
//List<User> userList1=sqlSession.selectList("com.demo.dao.Userdao.getUserList");
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
}

Mybatis 学习记录 续的更多相关文章

  1. MyBatis 学习记录5 MyBatis的二级缓存

    主题 之前学习了一下MyBatis的一级缓存,主要涉及到BaseExecutor这个类. 现在准备学习记录下MyBatis二级缓存. 配置二级缓存与初始化发生的事情 首先二级缓存默认是不开启的,需要自 ...

  2. MyBatis 学习记录3 MapperMethod类

    主题 之前学习了一下MapperProxy的生产过程,自定义Mapper类的对象是通过动态代理生产的,调用自定义方法的时候实际上是调用了MapperMethod的execute方法:mapperMet ...

  3. MyBatis 学习记录7 一个Bug引发的思考

    主题 这次学习MyBatis的主题我想记录一个使用起来可能会遇到,但是没有经验的话很不好解决的BUG,在特定情况下很容易发生. 异常 java.lang.IllegalArgumentExceptio ...

  4. MyBatis 学习记录6 TypeHandler

    主题 因为对MyBatis在JDBC数据和Java对象之间数据转化比较感兴趣,所以就记录并学习一下TypeHandler. 使用场景 如上图所示,观察下接口方法就能明白.TypeHandler主要用于 ...

  5. MyBatis 学习记录4 MyBatis的一级缓存

    主题 分享记录一下MyBatis的一级缓存相关的学习. Demo public static void firstLevelCache() { init("mybatis-config.xm ...

  6. mybatis 学习记录1

    起因 以前刚学习java三大框架的时候持久层框架我是自学的是hibernate..感觉蛮好用的,so easy..后来大三实习公司用的是jpa(hibernate外包装一层)...再后来工作1年多用的 ...

  7. mybatis学习记录六——一对一、一对多和多对多查询

    9       订单商品数据模型 9.1     数据模型分析思路 1.每张表记录的数据内容 分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程. 2.每张表重要的字段设置 非空 ...

  8. Mybatis学习记录(六)----Mybatis的高级映射

    1.一对多查询 1.1 需求 查询订单及订单明细的信息. 1.2 sql语句 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders. ...

  9. Mybatis学习记录(五)----Mybatis的动态SQL

    1.  什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.1 需求 用户信息综合查询列表和用户信息查询列表总数这两个statemen ...

随机推荐

  1. JAVA使用netty建立websocket连接

    依赖 <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <gr ...

  2. 【LeetCode】991. Broken Calculator 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  3. 【九度OJ】题目1080:进制转换 解题报告

    [九度OJ]题目1080:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1080 题目描述: 将M进制的数X转换为 ...

  4. 【LeetCode】671. Second Minimum Node In a Binary Tree 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 找出所有值再求次小值 遍历时求次小值 日期 题目地址 ...

  5. 【LeetCode】567. Permutation in String 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/permutati ...

  6. 1370 - Bi-shoe and Phi-shoe

    1370 - Bi-shoe and Phi-shoe   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 3 ...

  7. 分析一个简单的goroutine资源池

    分析一个简单的goroutine资源池 tunny. 从资源池中获取goroutine并进行处理的逻辑如下: tunny将goroutine处理单元封装为workWrapper,由此可以对gorout ...

  8. Linux设置主机名与hosts映射

    目的 方便操作,便于建立Linux集群. 设置主机名 查看主机名:hostname 设置主机名,修改/etc/hosts:vim /etc/hostname 通过主机名ping通 原理 通过hosts ...

  9. 元宇宙(metaverse)中文社区-工程实践

    欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区. 2021年"元宇宙"的这个词的火热程度在业内绝对不亚于疫情,趁着这个热度,本文记录了如何搭建 ...

  10. Spring企业级程序设计 • 【第5章 Spring MVC快速入门】

    全部章节   >>>> 本章目录 5.1 Spring MVC设计概述及其框架结构 5.1.1 Spring MVC介绍 5.1.1 Spring MVC优势 5.1.2  S ...