java之mybatis之使用mybatis实现crud操作
目录结构:

1.封装 mybatis 的工具类:
MybatisUtil.java
public class MybatisUtil {
private static SqlSessionFactory getSqlSessionFactory() throws IOException{
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
return new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSession getSqlSession() throws IOException{
//填写参数 true表示事务自动提交
return getSqlSessionFactory().openSession(true);
}
}
2.vo类
User.java
public class User implements Serializable{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
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">
<!--
namespace用来指定映射文件的命名空间,在这里通过namespace可以找到该空间下的所有的
sql语句映射。namespace的命名通常和应该映射文件所在【包名+映射文件名】
-->
<mapper namespace="cn.sxt.vo.UserMapper">
<select id="findAll" resultType="User">
select * from t_user
</select> <!-- select用来编写查询的sql语句 id在同一个namespace下是唯一的。
parameterType用来指定参数类型
#{id} 占位符 输入参数将会填充。建议和参数名要相同
resultType 用来指定返回值类型
-->
<select id="selectUser" parameterType="int" resultType="User">
select * from t_user where id = #{id}
</select>
<!-- insert用来映射插入语句
useGeneratedKeys 为true表示使用主键自增策略
parameterType用来指定参数类型
占位符中的 名称是参数的属性名,并且要提供get/set方法
-->
<insert id="insertUser" useGeneratedKeys="true" parameterType="User">
insert into t_user(name,age) values(#{name},#{age})
</insert>
<!-- delete 用来指定删除语句 -->
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>
<!-- update 用来指定更新语句 -->
<update id="updateUser" parameterType="User">
update t_user set name=#{name},age=#{age} where id=#{id}
</update>
</mapper>
4.核心配置文件
mybatis.cfg.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 它们都是外部化,可替代的属性。可以配置在一个典型的Java 属性文件中,或者通过
properties 元素的子元素进行配置 -->
<properties resource="jdbc.properties"></properties>
<!-- 别名是一个较短的Java 类型的名称。用来设置别名 -->
<typeAliases>
<!-- 为指定的包下所有类设置别名,别名默认为类名 -->
<package name="cn.sxt.vo"/>
<!-- 为指定的类型设置别名
<typeAlias type="cn.sxt.vo.User" alias="User"/>
-->
</typeAliases>
<!-- MyBatis 能够配置多套运行环境,这有助于将您的SQL 映射到多个数据库上。例如,在您的
开发、测试、生产环境中,您可能有不同的配置。
default指向默认使用的环境
-->
<environments default="development">
<environment id="development">
<!--
JDBC – 这个配置直接使用JDBC 的提交和回滚功能。它依赖于从数据源获得连接来管理
事务的生命周期。
• MANAGED – 这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让
容器(例如:Spring 或者J2EE 应用服务器)来管理事务的生命周期。
-->
<transactionManager type="JDBC" />
<!--
UNPOOLED – 这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。
POOLED – 这个数据源的实现缓存了JDBC 连接对象,用于避免每次创建新的数据库连接时都初始
化和进行认证,加快程序响应。并发WEB 应用通常通过这种做法来获得快速响应。
JNDI – 这个数据源的配置是为了准备与像Spring 或应用服务器能够在外部或者内部配置数据
源的容器一起使用,然后在JNDI 上下文中引用它。
-->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- sql语句的映射文件配置 -->
<mapper resource="cn/sxt/vo/UserMapper.xml"/>
</mappers>
</configuration>
jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=1111
5.测试
MybatisTest.java
public class MybatisTest {
@Test
public void testAdd() throws IOException{
User user = new User();
user.setName("刘德华");
user.setAge(55);
SqlSession session = MybatisUtil.getSqlSession();
//增 删 改 返回值为受影响的行数
session.insert("cn.sxt.vo.UserMapper.insertUser", user);
session.close();
}
@Test
public void testUpdate() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
User user=session.selectOne("cn.sxt.vo.UserMapper.selectUser", 1);
user.setName("彰五金");
session.update("cn.sxt.vo.UserMapper.updateUser",user);
session.close();
}
@Test
public void testDelete() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
session.delete("cn.sxt.vo.UserMapper.deleteUser", 3);
session.close();
}
@Test
public void testFindAll() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
for(User u:list){
System.out.println(u);
}
session.close();
}
}
java之mybatis之使用mybatis实现crud操作的更多相关文章
- Mybatis基于代理Dao实现CRUD操作 及 Mybatis的参数深入
Mybatis基于代理Dao实现CRUD操作 使用要求: 1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定 ...
- 使用MyBatis对数据库中表实现CRUD操作(二)
一.使用MyBatis对表实现CRUD操作 1.定义sql映射 userMapper.xml <?xml version="1.0" encoding="UTF-8 ...
- Mybatis学习(二) - CRUD操作(增删改查操作)
直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...
- Springboot整合Mybatis实现级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- MyBatis使用注解方式实现CRUD操作
一.使用注解后就不需要写SysGroupDaoMapper.xml 只需要在Dao的抽象方法前加上相应的注解就可以. package cn.mg39.ssm01.dao; import java.ut ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
随机推荐
- kafka(五) 流式处理 kafka stream
参考文档: http://www.infoq.com/cn/articles/kafka-analysis-part-7?utm_source=infoq&utm_campaign=user_ ...
- 冰多多团队-第二次scrum例会
冰多多团队-第二次Scrum会议 会议基本情况 会议时间:4月8日 19:00 - 19:30 会议地点:新主楼F座2楼沙发休息处 工作情况 团队成员 已完成任务 待完成任务 zpj Service实 ...
- Net core学习系列(九)——Net Core配置
一.简介 NET Core为我们提供了一套用于配置的API,它为程序提供了运行时从文件.命令行参数.环境变量等读取配置的方法.配置都是键值对的形式,并且支持嵌套,.NET Core还内建了从配置反序列 ...
- vs2017+qt5.x编译32位应用<转>
原文地址:https://www.cnblogs.com/woniu201/p/10862170.html 概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用ms ...
- java项目中使用ffmpeg剪辑部分视频
在项目中,有个需求是分享视频链接地址到微信.qq或者朋友圈,只能试看两分钟,本想着通过h5界面就能控制实现效果,代码如下,但是前端终究不是安全的,其次监听事件,如果拉播放进度条,中途停顿多次,就会出现 ...
- NSIS安装或卸载时检查程序是否正在运行
转载:https://www.cnblogs.com/z5337/p/4766415.html 转载:https://www.gongzi.org/nsisbuildqqstop.html 转载:ht ...
- Q-Dir – 布局灵活的文件管理,强烈推荐
Q-dir 是轻量的文件管理器,特点鲜明,各种布局视图切换灵活,默认四个小窗口组成一个大窗口,操作快捷.软件虽小,却非常好用 下载地址: https://www.softwareok.com/?Dow ...
- cisco 交换机设置时区、时间、同步日志本地时间
Core-Switch-1#show clockCore-Switch-1#show ntp statusCore-Switch-1#conf tCore-Switch-1(config)# cloc ...
- darkflow测试和训练yolo
转自 https://blog.csdn.net/u011961856/article/details/76582669参考自github:https://github.com/thtrieu/dar ...
- Promise.resolve解析
总结自:https://blog.csdn.net/lq15310444798/article/details/81275278 Promise.resolve返回一个Promise实例 参数分4种情 ...