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 ...
随机推荐
- CF1070K Video Posts 题解
Content 有 \(n\) 个数 \(a_1,a_2,a_3,...,a_n\),要求分成 \(k\) 段,每一段的数的总和相等.输出这些段的长度,或者不可能满足要求. 数据范围:\(1\leqs ...
- CF1104A Splitting into digits 题解
Content 给定一个数字 \(n\),试将这个数分成若干个数,使得这些数都相等,输出任意一个方案均可. 数据范围:\(1\leqslant n\leqslant 1000\). Solution ...
- CF1003C Intense Heat 题解
Content 给定一个长度为 \(n\) 的数列,求数列中所有长度 \(\geqslant k\) 的区间的最大平均值. 数据范围:\(1\leqslant k,n,a_i\leqslant 500 ...
- Python软件目录结构
目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论. 这里面说的已经很好了, ...
- 『与善仁』Appium基础 — 29、获取toast信息
目录 1.toast介绍 2.toast定位 3.示例 4.封装toast判断 1.toast介绍 Android中的toast是一种简易的消息提示框,toast提示框不能被用户点击,会根据所设置的显 ...
- 【LeetCode】156. Binary Tree Upside Down 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 迭代 日期 题目地址:https://leet ...
- 【LeetCode】1128. Number of Equivalent Domino Pairs 等价多米诺骨牌对的数量(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计 代码 复杂度分析 日期 题目地址:http ...
- D. Ability To Convert
http://codeforces.com/contest/758/problem/D D. Ability To Convert time limit per test 1 second memor ...
- JVM调参
今天看了下之前做的一个异步处理任务的服务,发现占用内存量比较大,达到2G,但我检查了代码,基本没有static对象.但这个服务有个特点,就是每次执行一个任务的时候,会从数据库中捞大量的数据做处理,因此 ...
- WPF自定义界面WindowChrome
WPF自定义界面WindowChrome 默认WPF的界面其实也还行,就是满足不了日渐增长的需求,界面还是需要有更高的自定义程度,包括标题栏也要能够塞下更多的操作控件. 默认窗口介绍 新建WPF项目, ...