项目结构如下:

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. springboot发送邮件(含附件)

    引入maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  2. JAVA判断URL地址是否非法

    /** * 判断请求url是否非法 * @param url * @return */ public static boolean isValidRequestUri(String url) { if ...

  3. 【LeetCode】724. Find Pivot Index 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 先求和,再遍历 日期 题目地址:https://le ...

  4. 1122 机器人走方格 V4

    1122 机器人走方格 V4 基准时间限制:1 秒 空间限制:131072 KB  四个机器人a b c d,在2 * 2的方格里,一开始四个机器人分别站在4个格子上,每一步机器人可以往临近的一个格子 ...

  5. 1030 - Discovering Gold

    1030 - Discovering Gold    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 M ...

  6. Go语言核心36讲(新年彩蛋)--学习笔记

    新年彩蛋 | 完整版思考题答案 基础概念篇 Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的? 答:你设置的环境变量GOPATH的值决定了这个顺序.如果你在GOPATH中设置了多个工作区, ...

  7. 面试官:this和super有什么区别?this能调用到父类吗?

    本文已收录<Java常见面试题>:https://gitee.com/mydb/interview this 和 super 都是 Java 中常见的关键字,虽然二者在很多情况下都可以被省 ...

  8. Mind the Box: $\ell_1$-APGD for Sparse Adversarial Attacks on Image Classifiers

    目录 概 主要内容 Croce F. and Hein M. Mind the box: \(\ell_1\)-APGD for sparse adversarial attacks on image ...

  9. Accelerating Deep Learning by Focusing on the Biggest Losers

    目录 概 相关工作 主要内容 代码 Accelerating Deep Learning by Focusing on the Biggest Losers 概 思想很简单, 在训练网络的时候, 每个 ...

  10. Java初学者作业——编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级。定义方法实现学生成绩的评测功能。

    返回本章节 返回作业目录 需求说明: 编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级.要求:定义方法实现学生成绩的评测功能. 学生的英语考试成绩进行评测,评测规 ...