目录结构:

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操作的更多相关文章

  1. Mybatis基于代理Dao实现CRUD操作 及 Mybatis的参数深入

    Mybatis基于代理Dao实现CRUD操作 使用要求: 1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定 ...

  2. 使用MyBatis对数据库中表实现CRUD操作(二)

    一.使用MyBatis对表实现CRUD操作 1.定义sql映射 userMapper.xml <?xml version="1.0" encoding="UTF-8 ...

  3. Mybatis学习(二) - CRUD操作(增删改查操作)

    直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...

  4. Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  5. Spring Boot整合Mybatis完成级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  6. MyBatis使用注解方式实现CRUD操作

    一.使用注解后就不需要写SysGroupDaoMapper.xml 只需要在Dao的抽象方法前加上相应的注解就可以. package cn.mg39.ssm01.dao; import java.ut ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  8. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

  9. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  10. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

随机推荐

  1. fluid.io.load_inference_model 载入多个模型的时候会报错 -- [paddlepaddle]

    将多个模型部署到同一个服务时,会出现stack错误. 原因是program为全局. 改成这样,可以解决. solved by myself. for those who need it:use a n ...

  2. Java一行代码

    1.整数格式化成0X 的形式字符串 String hour=String.format("%02d", txtWaringTime.getCurrentHour()); Strin ...

  3. Mockito 的用法

    本文为博主原创,转载请注明出处: Mockito 是一个基于MIT协议的开源java测试框架. Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为.对于moc ...

  4. linux系统错误码大全

    #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #defi ...

  5. Java基础 awt Frame 设置窗体的背景颜色

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  6. SNF快速开发平台2019-角色、权限、账户的概念理解-非常全的理论讲解权限控制

    组织模型   资源模型  操作模型 谁能够执行哪些操作    执行资源的范围 资源概念资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限 权限概念权限是对资源 ...

  7. [转]manjaro安装vmware虚拟机

    全球领先的信息与通信解决方案供应商华为,近日面向全球ICT从业者,以及有兴趣掌握ICT相关知识的人士,免费推出其图形化网络仿真工具平台—eNSP.该平台通过对真实的网络设备的仿真模拟,帮助广大ICT从 ...

  8. 【Git】PHP项目自动化部署的注意事项

    直接开始 1 服务器克隆项目 git clone git@*****.com/project.git 2 更改所有者 chown www:www /www/wwwroot/project/* -R 3 ...

  9. json 格式化处理工具

    json 格式化处理工具 用于JSON的快速命令行处理工具,简单无依赖. 我这边列举一些最常用的: 调试 http 请求时打印格式化后的数据 格式化本地或或流中的数据 获取 json 的键值或进行执行 ...

  10. springboot docker 部署

    1.新建一个最简单的springboot项目 https://code.aliyun.com/859143303/hello-world.git 2.src/main/docker下新建Dockerf ...