目录结构:

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. Linux文件系统只读Read-only file system的解决方法

    问题原因:系统没有正常关机,导致虚拟磁盘出现文件系统错误. 解决方法:使用fsck手动修复,具体操作如下: 重启系统后使用root进入单用户模式,运行 fsck.ext3 -y /dev/vda3 说 ...

  2. 服务在kubernetes上优雅退出

    在dashboard上,直接操作一下就可以了:将spec.replicas = 0,对应的容器组会自动销毁

  3. spring(一)IOC & AOP

    参考文档: spring详解:http://www.cnblogs.com/ysocean/p/7466191.html(可以说非常详细了) aop源码详解:https://www.cnblogs.c ...

  4. Optional int parameter 'resourceState' is present but cannot be translated into a null value

    错误日志: java.lang.IllegalStateException: Optional int parameter 'resourceState' is present but cannot ...

  5. JetBrains套装免费学生授权申请(IntelliJ, ReSharper, WebStorm...)

    IntelliJ作为一款强大的Java开发IDE,售价自然也不会低.但是对于学生或教师来说,JetBrains开发工具免费提供给学生和教师使用.而且取得一次授权后只需要使用相同的 JetBrains ...

  6. Java 字符集编码

    一.字符编码实例1.NioTest13_In.txt文件内容拷贝到NioTest13_Out.txt文件中 public class NioTest13 { public static void ma ...

  7. 微信小程序支付接口之Django后台

    本文链接:https://blog.csdn.net/qq_41860162/article/details/89098694Python3-django-微信小程序支付接口调用工具类生成一系列微信官 ...

  8. linux里安装使用svn

    1.安装 sudo apt-get install subversion 2.checkout工程 svn checkout svn://192.168.0.3/测试工具 /home/testtool ...

  9. unity 如何打开本地文件夹,并选中文件

    public static void OpenDirectory(string path, bool isFile = false) { if (string.IsNullOrEmpty(path)) ...

  10. .net core 2.2 EF oracle db first

    Nuget控制台: Install-Package log4net Install-Package Newtonsoft.Json Install-Package Autofac Install-Pa ...