Mybatis 学习记录 续
项目结构如下:

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 学习记录 续的更多相关文章
- MyBatis 学习记录5 MyBatis的二级缓存
主题 之前学习了一下MyBatis的一级缓存,主要涉及到BaseExecutor这个类. 现在准备学习记录下MyBatis二级缓存. 配置二级缓存与初始化发生的事情 首先二级缓存默认是不开启的,需要自 ...
- MyBatis 学习记录3 MapperMethod类
主题 之前学习了一下MapperProxy的生产过程,自定义Mapper类的对象是通过动态代理生产的,调用自定义方法的时候实际上是调用了MapperMethod的execute方法:mapperMet ...
- MyBatis 学习记录7 一个Bug引发的思考
主题 这次学习MyBatis的主题我想记录一个使用起来可能会遇到,但是没有经验的话很不好解决的BUG,在特定情况下很容易发生. 异常 java.lang.IllegalArgumentExceptio ...
- MyBatis 学习记录6 TypeHandler
主题 因为对MyBatis在JDBC数据和Java对象之间数据转化比较感兴趣,所以就记录并学习一下TypeHandler. 使用场景 如上图所示,观察下接口方法就能明白.TypeHandler主要用于 ...
- MyBatis 学习记录4 MyBatis的一级缓存
主题 分享记录一下MyBatis的一级缓存相关的学习. Demo public static void firstLevelCache() { init("mybatis-config.xm ...
- mybatis 学习记录1
起因 以前刚学习java三大框架的时候持久层框架我是自学的是hibernate..感觉蛮好用的,so easy..后来大三实习公司用的是jpa(hibernate外包装一层)...再后来工作1年多用的 ...
- mybatis学习记录六——一对一、一对多和多对多查询
9 订单商品数据模型 9.1 数据模型分析思路 1.每张表记录的数据内容 分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程. 2.每张表重要的字段设置 非空 ...
- Mybatis学习记录(六)----Mybatis的高级映射
1.一对多查询 1.1 需求 查询订单及订单明细的信息. 1.2 sql语句 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders. ...
- Mybatis学习记录(五)----Mybatis的动态SQL
1. 什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.1 需求 用户信息综合查询列表和用户信息查询列表总数这两个statemen ...
随机推荐
- Spring5 概述及Spring IOC学习
Spring Framework 5 1. Spring框架 1.1 Spring框架概述 1.2 主要内容 Spring框架是一个开源的JavaEE的应用程序 主要核心是 IOC(控制反转)和AOP ...
- 【LeetCode】540. Single Element in a Sorted Array 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:异或 方法二:判断相邻元素是否相等 方法三:二分查找 ...
- How Many Sets I(zoj3556)
How Many Sets I Time Limit: 2 Seconds Memory Limit: 65536 KB Give a set S, |S| = n, then how ma ...
- Chapter 3 Observational Studies
目录 概 3.1 3.2 Exchangeability 3.3 Positivity 3.4 Consistency First Second Fine Point 3.1 Identifiabil ...
- vue 把字符串的所有=替换成&&&的方法
//把字符串中所有=换成&&& let reg=new RegExp('=','g')//g代表全部 let newMsg=JSON.stringify(msg).replac ...
- 通过kaggle api下载数据集
Kaggle API使用教程 https://www.kaggle.com 的官方 API ,可使用 Python 3 中实现的命令行工具访问. Beta 版 - Kaggle 保留修改当前提供的 A ...
- LT7211替代芯片|低BOM成本替代LT7211 EDP转LVDS转换设计芯片CS5211
LT7211B是一种用于虚拟现实/显示应用的TYPE-C/DP1.2转LVDS转换芯片.LT7211B 对于DP1.2输入,LT7211B可以配置为1.2.4车道,还支持车道交换功能.自适应均衡使其适 ...
- 编写Java程序,定义士兵类(Soldiers)并初始化5个士兵对象。
返回本章节 返回作业目录 需求说明: 创建士兵类(Soldiers),定义有一个String类型参数name,代表士兵的姓名,两个int类型变量x和y,分别表示士兵所在的坐标位置,x代表横坐标,y代表 ...
- playwright--自动化(二):过滑块验证码 验证码缺口识别
前两天需要自动化登录一个商城的后台 用的是playwright 没有用selenium 中间出了一个滑块验证 现阶段playwright教程不是太多,自己做移动的时候各种找,费劲巴拉的.现在自己整出来 ...
- 三角网格上的寻路算法Part.1—Dijkstra算法
背景 最近在研究中产生了这样的需求:在三角网格(Mesh)表示的地形图上给出两个点,求得这两个点之间的地面距离,这条距离又叫做"测地线距离(Geodesic)".计算三角网格模型表 ...