目录结构:

1.封装 mybatis 的工具类:

MybatisUtil.java

  1. public class MybatisUtil {
  2. private static SqlSessionFactory getSqlSessionFactory() throws IOException{
  3. Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
  4. return new SqlSessionFactoryBuilder().build(reader);
  5. }
  6. public static SqlSession getSqlSession() throws IOException{
  7. //填写参数 true表示事务自动提交
  8. return getSqlSessionFactory().openSession(true);
  9. }
  10. }

2.vo类

User.java

  1. public class User implements Serializable{
  2. private int id;
  3. private String name;
  4. private int age;
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public int getAge() {
  18. return age;
  19. }
  20. public void setAge(int age) {
  21. this.age = age;
  22. }
  23. @Override
  24. public String toString() {
  25. return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
  26. }
  27. }

3.映射文件

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!--
  6. namespace用来指定映射文件的命名空间,在这里通过namespace可以找到该空间下的所有的
  7. sql语句映射。namespace的命名通常和应该映射文件所在【包名+映射文件名】
  8. -->
  9. <mapper namespace="cn.sxt.vo.UserMapper">
  10. <select id="findAll" resultType="User">
  11. select * from t_user
  12. </select>
  13.  
  14. <!-- select用来编写查询的sql语句 id在同一个namespace下是唯一的。
  15. parameterType用来指定参数类型
  16. #{id} 占位符 输入参数将会填充。建议和参数名要相同
  17. resultType 用来指定返回值类型
  18. -->
  19. <select id="selectUser" parameterType="int" resultType="User">
  20. select * from t_user where id = #{id}
  21. </select>
  22. <!-- insert用来映射插入语句
  23. useGeneratedKeys 为true表示使用主键自增策略
  24. parameterType用来指定参数类型
  25. 占位符中的 名称是参数的属性名,并且要提供get/set方法
  26. -->
  27. <insert id="insertUser" useGeneratedKeys="true" parameterType="User">
  28. insert into t_user(name,age) values(#{name},#{age})
  29. </insert>
  30. <!-- delete 用来指定删除语句 -->
  31. <delete id="deleteUser" parameterType="int">
  32. delete from t_user where id=#{id}
  33. </delete>
  34. <!-- update 用来指定更新语句 -->
  35. <update id="updateUser" parameterType="User">
  36. update t_user set name=#{name},age=#{age} where id=#{id}
  37. </update>
  38. </mapper>

4.核心配置文件

mybatis.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 它们都是外部化,可替代的属性。可以配置在一个典型的Java 属性文件中,或者通过
  7. properties 元素的子元素进行配置 -->
  8. <properties resource="jdbc.properties"></properties>
  9. <!-- 别名是一个较短的Java 类型的名称。用来设置别名 -->
  10. <typeAliases>
  11. <!-- 为指定的包下所有类设置别名,别名默认为类名 -->
  12. <package name="cn.sxt.vo"/>
  13. <!-- 为指定的类型设置别名
  14. <typeAlias type="cn.sxt.vo.User" alias="User"/>
  15. -->
  16. </typeAliases>
  17. <!-- MyBatis 能够配置多套运行环境,这有助于将您的SQL 映射到多个数据库上。例如,在您的
  18. 开发、测试、生产环境中,您可能有不同的配置。
  19. default指向默认使用的环境
  20. -->
  21. <environments default="development">
  22. <environment id="development">
  23. <!--
  24. JDBC – 这个配置直接使用JDBC 的提交和回滚功能。它依赖于从数据源获得连接来管理
  25. 事务的生命周期。
  26. • MANAGED – 这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让
  27. 容器(例如:Spring 或者J2EE 应用服务器)来管理事务的生命周期。
  28. -->
  29. <transactionManager type="JDBC" />
  30. <!--
  31. UNPOOLED – 这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。
  32. POOLED – 这个数据源的实现缓存了JDBC 连接对象,用于避免每次创建新的数据库连接时都初始
  33. 化和进行认证,加快程序响应。并发WEB 应用通常通过这种做法来获得快速响应。
  34. JNDI – 这个数据源的配置是为了准备与像Spring 或应用服务器能够在外部或者内部配置数据
  35. 源的容器一起使用,然后在JNDI 上下文中引用它。
  36. -->
  37. <dataSource type="POOLED">
  38. <property name="driver" value="${driver}" />
  39. <property name="url" value="${url}" />
  40. <property name="username" value="${username}" />
  41. <property name="password" value="${password}" />
  42. </dataSource>
  43. </environment>
  44. </environments>
  45. <mappers>
  46. <!-- sql语句的映射文件配置 -->
  47. <mapper resource="cn/sxt/vo/UserMapper.xml"/>
  48. </mappers>
  49. </configuration>

jdbc.properties

  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/test
  3. username=root
  4. password=1111

5.测试

MybatisTest.java

  1. public class MybatisTest {
  2. @Test
  3. public void testAdd() throws IOException{
  4. User user = new User();
  5. user.setName("刘德华");
  6. user.setAge(55);
  7. SqlSession session = MybatisUtil.getSqlSession();
  8. //增 删 改 返回值为受影响的行数
  9. session.insert("cn.sxt.vo.UserMapper.insertUser", user);
  10. session.close();
  11. }
  12. @Test
  13. public void testUpdate() throws IOException{
  14. SqlSession session = MybatisUtil.getSqlSession();
  15. User user=session.selectOne("cn.sxt.vo.UserMapper.selectUser", 1);
  16. user.setName("彰五金");
  17. session.update("cn.sxt.vo.UserMapper.updateUser",user);
  18. session.close();
  19. }
  20. @Test
  21. public void testDelete() throws IOException{
  22. SqlSession session = MybatisUtil.getSqlSession();
  23. session.delete("cn.sxt.vo.UserMapper.deleteUser", 3);
  24. session.close();
  25. }
  26. @Test
  27. public void testFindAll() throws IOException{
  28. SqlSession session = MybatisUtil.getSqlSession();
  29. List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
  30. for(User u:list){
  31. System.out.println(u);
  32. }
  33. session.close();
  34. }
  35. }

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. Sql Server 2008 R2安装教程

    作者:骄阳似火_2018 来源:CSDN 原文:https://blog.csdn.net/weixin_42773514/article/details/87008537 版权声明:本文为博主原创文 ...

  2. 针对jquery的优化方法,你知道几条

    (转)我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来 ====================== ...

  3. Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表

    Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表 除了以上提到的图表外,OxyPlot组件还包含了6种类型的其它图表,分别为等高线图.箱线图.饼图.热图.散点图和散点误差图,如图 ...

  4. promise 和 async await比较

    async搭配await是ES7提出的,它的实现是基于Promise.这里使用它对比Promise的用法,这里只是简单的适合日常业务的使用场景.   async.await是ES7中的提案,通过同步方 ...

  5. 超简易简易PHP爬虫

    利用CURL和DOMDocument.通过xpath筛选数据,实现的简易PHP爬虫 <?php header('Content-type: text/plain; charset=utf-8') ...

  6. 解决StrToDateTime()不是有效日期类型的问题

    方法一: function GetDateFormat():string; var SysFrset: TFormatSettings; begin Result:=''; GetLocaleForm ...

  7. mysql 得到指定时间段的日期

    set @startDate='2019-01-01'; set @endDate='2019-04-01'; DAY) AS DAY FROM ( SELECT a.a ) AS a ) AS b ...

  8. maven基础依赖外部lib包(依赖钉钉sdk为例)

    jar包放置位置 pom.xml指定依赖 1 <dependencies> 2 <!--钉钉工具包,如缺失请到钉钉服务器开发文档下载--> 3 <dependency&g ...

  9. Srping的IOC

    XML方式: IOC:控制反转的底层原理就是:工厂模式+反射+配置文件DI:依赖注入就是通过配置文件设置属性值 BeanFactory 是老版本的工厂类:调用getBean的时候,才会生成类的实例Ap ...

  10. ThinkPHP5远程代码执行高危漏洞(附:升级修复解决方法)

    漏洞描述 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell. 漏洞评级 严重 影响版本 ThinkPHP 5 ...