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 ...
随机推荐
- tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决
tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...
- 分布式:分布式事务(CAP、两阶段提交、三阶段提交)
1 关于分布式系统 1.1 介绍 我们常见的单体结构的集中式系统,一般整个项目就是一个独立的应用,所有的模块都聚合在一起.明显的弊端就是不易扩展.发布冗重.服务治理不好做. 所以我们把整个系统拆分成若 ...
- 优雅的按键模块-----Multi-button
优雅的按键模块-----Multi-button 在我们日常开发和使用的过程中常常使用了一些按键,利用按键实现不同的功能,比如长按,短按,双击等等.但是每次都是采用标志等等来实现信息的读取,是否有 ...
- 【九度OJ】题目1047:素数判定 解题报告
[九度OJ]题目1047:素数判定 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1047 题目描述: 给定一个数n,要求判 ...
- 【LeetCode】967. Numbers With Same Consecutive Differences 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetco ...
- 【剑指Offer】反转链表 解题报告(Python)
[剑指Offer]反转链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描 ...
- 【LeetCode】154. Find Minimum in Rotated Sorted Array II 解题报告(Python)
[LeetCode]154. Find Minimum in Rotated Sorted Array II 解题报告(Python) 标签: LeetCode 题目地址:https://leetco ...
- Sum Of Gcd(hdu 4676)
Sum Of Gcd Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- 【剑指Offer】二叉搜索树的第k个结点 解题报告(Python)
[剑指Offer]二叉搜索树的第k个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...
- Codeforce 633C. Spy Syndrome 2
C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...