Mybatis3配置方法

 一.准备

  1.三个Jar包,

       1.mybatis-3.2.1.jar

       2.mysql-connector-java-5.1.12-bin.jar

       3.log4j-1.2.17.jar

  2.vo类对象

public class SysUser {private Long id;private String name;private String loginName;private String password;private String avatar;/** getter and setter */@Overridepublic String toString() {//右键source-toString重写return "SysUser [avatar=" + avatar + ", id=" + id + ", loginName="+ loginName + ", name=" + name + ", password=" + password + "]";}}

  二.建立Dao层与映射文件

1.mybatis-config.xml配置文件

最基础的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"><!-- 配置文件名mybatis-config.xml不要换,虽然没问题 -->
<configuration><!-- 配置 --><!-- 名称替换,替换完就可以用属性alias的值代替type里的对象用各种对应的在Mapper.xml里了 --><!-- 必须写在“环境”标签之前 --><typeAliases><typeAlias alias="SysUser" type="org.jsoft.vo.SysUser" /></typeAliases><environments default="development"> <!-- 环境群   default属性参数下面id的标记的表示默认环境--><environment id="development"><!-- 单个的环境  id属性标记一下--><transactionManager type="JDBC" /><dataSource type="POOLED"><!-- 支持多个数据源,下面是连接MySQL需要的参数 --><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><!-- src的路径,对应vo对象的映射xml文件,注意一定要用斜杠/ --><mapper resource="org/soft/vo/SysUserMapper.xml" /></mappers>
</configuration>

2.dao层核心java代码

import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;//以下代码即可创建sqlsession
String resource = "mybatis/mybatis-config.xml";//路径字符串内容必须语法规范,位置也可放在src根目录下
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

 由此 建立了session会话

 3.Dao层增删改查java代码与映射

(1)建立对应的SysUserMapper.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">
<!-- 一般一个Mapper.xml 对应一张表 -->
<mapper namespace="SysUserMapper"><!-- org.jsoft.vo.SysUserMapper --><!-- id是查询的标记,resultType属性必须是带包名的对象, --><select id="selectOne" parameterType="SysUser" resultType="SysUser">select * from SysUser where id = #{id}</select><insert id="insert" parameterType="SysUser">insert into SysUser(name,loginName,password,avatar)values(#{name},#{loginName},#{password},#{avatar})</insert><update id="update" parameterType="SysUser">update SysUser <set><!-- 取代语法set --><if test="name != null">name = #{name},</if><if test="loginName != null">loginName = #{loginName},</if><if test="avatar != null">avatar = #{avatar},</if><if test="password != null">password = #{password},</if></set>where id = #{id}</update><delete id="delete" parameterType="SysUser">delete from SysUser where id =#{id}</delete><!-- 这个语句本人在java方法里设置成了selectList返回一个list --><select id="selectOneByList" parameterType="SysUser" resultType="SysUser">select *from SysUser where id = #{id}</select>
<!-- 动态语句 --><!-- 条件查询 --><!-- 以list的形式返回多个对象,resultType属性必须对应 相应的对象,即返回的List里是SysUser对象--><select id="query" parameterType="SysUser" resultType="SysUser">select * from SysUser<where><!-- 取代where,并且不用考录多and的问题 --><!-- 条件值查询,test内的字符串为一个Boolean类型,为true就执行 --><if test="id != null">and id = #{id}</if><if test="name != null">and name = #{name}</if><if test="loginName != null">and loginName = #{loginName}</if><if test="password != null">and password = #{password}</if><if test="avatar != null">and avatar = #{avatar}</if></where></select><!-- 通过in语法查多个id的对象 --><select id="selectSysUserIn" resultType="SysUser">SELECT *FROM SYSUSERWHERE ID in<!-- 查询所有id字段后的值对应的结果 --><!-- 循环标签 --><!-- collection循环的是一个list,item是循环的内容,index是索引,有可能不用 --><foreach item="item" index="index" collection="list" open="("separator="," close=")"><!-- 开头分隔结尾分别所用的属性 -->#{item}</foreach></select>
</mapper>

(2)Dao层增删改查方法

1.查一个,并返回POJO

SqlSession session = sqlSessionFactory.openSession();
SysUser s = new SysUser();
s.setId(1L);
s.setLoginName("Bob");
s.setName("pink");
s.setPassword("21");
SysUser sysUser = (SysUser) session.//返回的对象需要强转成对应的类selectOne("SysUserMapper.selectOne"//对应Mapper.xml里的namespace属性, s);//这里的参数就是对应的Mapper的#{}里要传的值

2.增

SqlSession session = sqlSessionFactory.openSession();
try {SysUser s = new SysUser();//s.setId(1L);s.setName("pink");s.setLoginName("Bob");s.setPassword("123");//s.setAvatar("21.png");int i = session.//这里的insert返回一个int类型的值insert("SysUserMapper.insert"//对应Mapper.xml里的namespace属性, s);//这里的参数就是对应的Mapper的#{}里要传的值session.commit();//强制事务管理,需要调用提交方法System.out.println(i);} finally {session.close();}

3.改

SqlSession session = sqlSessionFactory.openSession();
try {SysUser s = new SysUser();s.setId(3L);s.setLoginName("Dylan");s.setName("Bob");s.setPassword("121");s.setAvatar("bd.png");int i = session.//返回的对象需要强转成对应的类update("SysUserMapper.update"//对应Mapper.xml里的namespace属性, s);//这里的参数就是对应的Mapper的#{}里要传的值session.commit();} finally {session.close();}

4.删一个

SqlSession session = sqlSessionFactory.openSession();
try {SysUser s = new SysUser();s.setId(4L);int i = session.//返回的对象需要强转成对应的类delete("SysUserMapper.delete"//对应Mapper.xml里的namespace属性, s);//这里的参数就是对应的Mapper的#{}里要传的值session.commit();//强制事务管理,需要调用提交方法} finally {session.close();}

5.批量删

public static void deleteAll(SqlSessionFactory sqlSessionFactory){SqlSession session = sqlSessionFactory.openSession();try {List<Long> idList = new ArrayList<Long>();idList.add(7L);int i = session.//返回一个int类型表示是否成功delete("SysUserMapper.deleteAll"//对应Mapper.xml里的namespace属性, idList);//这里的参数就是对应的Mapper的#{}里要传的值session.commit();//强制事务管理,需要调用提交方法} finally {session.close();}
}

6.查一个,但返回的是List

SqlSession session = sqlSessionFactory.openSession();try {SysUser s = new SysUser();s.setId(1L);s.setLoginName("Bob");s.setName("pink");s.setPassword("21");List<SysUser> result = session.//返回的对象需要强转成对应的类selectList("SysUserMapper.selectOneByList"//对应Mapper.xml里的namespace属性, s);//这里的参数就是对应的Mapper的#{}里要传的值if(result != null && result.size() > 0){for(SysUser sysUser : result){System.out.println(sysUser);}}} finally {session.close();}

7.条件语句查多个,返回一个List

SqlSession session = sqlSessionFactory.openSession();
try {SysUser s = new SysUser();//s.setId(1L);s.setLoginName("Bob");s.setName("pink");s.setPassword("123");List<SysUser> result = session.//返回的对象需要强转成对应的类selectList("SysUserMapper.query"//对应Mapper.xml里的namespace属性, s);//这里的参数就是对应的Mapper的#{}里要传的值if(result != null && result.size() > 0){for(SysUser sysUser : result){System.out.println(sysUser);}}else{System.out.println("查到0");}
} finally {session.close();}

8.in条件查询多个,返回List

SqlSession session = sqlSessionFactory.openSession();
try {List<Long> idList = new ArrayList<Long>();idList.add(1L);idList.add(2L);idList.add(3L);List<SysUser> result = session.//返回的对象需要强转成对应的类selectList("SysUserMapper.selectSysUserIn"//对应Mapper.xml里的namespace属性, idList);//这里的参数就是对应的Mapper的#{}里要传的值if(result != null && result.size() > 0){System.out.println("查询到的对象数量 = " + result.size());for(SysUser sysUser : result){System.out.println(sysUser);}}
} finally {session.close();}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小白学数据:教你用Python实现简单监督学习算法

转载自 小白学数据&#xff1a;教你用Python实现简单监督学习算法今天&#xff0c;文摘菌想谈谈监督学习。监督学习作为运用最广泛的机器学习方法&#xff0c;一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近日&#xff0c;监督学习也依旧是入门机器学习的钥…

Spring_01_IoC初级总结

1.IoC简介 (转载) (原文&#xff1a;http://jinnianshilongnian.iteye.com/blog/1413846) via:jinnianshilongnian 1.1、IoC是什么 Ioc—Inversion of Control&#xff0c;即“控制反转”&#xff0c;不是什么技术&#xff0c;而是一种设计思想。在Java开发中&#xff0c;Io…

深度学习工具caffe详细安装指南

转载自 深度学习工具caffe详细安装指南前言&#xff1a; 在一台系统环境较好的linux机器上可以很容易的安装caffe&#xff0c;但是如果系统本身很旧&#xff0c;又没有GPU的话&#xff0c;安装就太麻烦了&#xff0c;所有都得从头做起&#xff0c;本文档旨在尽可能覆盖安装所要…

Spring_02_AOP初级总结

1.AOP简介 是对OOP编程方式的一种补充。翻译过来为“面向切面编程”。 可以理解为一个拦截器框架&#xff0c;但是这个拦截器会非常武断&#xff0c;如果它拦截一个类&#xff0c;那么它就会拦截这个类中的所有方法。如对一个目标列的代理&#xff0c;增强了目标类的所有方法…

spring(11)使用对象-关系映射持久化数据

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“Spring In Action&#xff08;中/英文版&#xff09;”&#xff0c;旨在review “spring(11)使用对象-关系映射持久化数据” 的相关知识&#xff1b;【2】spring 与 java 持久化API1&#xff09;intro&#xff1a;…

漫画:什么是数据仓库

转载自 玻璃猫 算法与数据结构一个故事 在很久很久以前&#xff0c;世界上生活着许多种族&#xff0c;有人类&#xff0c;有矮人&#xff0c;有精灵......他们有着不同的信仰&#xff0c;不同的文化&#xff0c;彼此相安无事。可是&#xff0c;有一个猥琐男却偏偏想要统治整个世…

SpringMVC_初级总结

1.SpringMVC的工作原理 浏览器发出一个http请求给服务器&#xff0c;如果匹配DispatcherServlet的请求映射路径&#xff08;在web.xml中指定&#xff09;&#xff0c;服务器将请求转交给DispatcherServlet.DipatcherServlet接收到这个请求之后&#xff0c;根据请求的路径&#…

tomcat中配置jndi数据源以便spring获取

【0】README0&#xff09;intro to jndi&#xff0c; plase visit intro to jndi&#xff1b;1&#xff09;本文译自 Configuring Spring MVC JdbcTemplate with JNDI Data Source in Tomcat&#xff1b;2&#xff09;本文旨在分析如何通过springmvc 获取 JNDI 数据源 以连接到…

Machine Learning:十大机器学习算法

转载自 Machine Learning&#xff1a;十大机器学习算法摘要: - 机器学习算法分类&#xff1a;监督学习、无监督学习、强化学习 - 基本的机器学习算法&#xff1a;线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强 机…

Java的值传递解析

值传递与引用传递 最近学基础的时候&#xff0c;老师讲了值传递和引用传递&#xff0c;这个问题一直不太明白&#xff0c;上网查了很多资料&#xff0c;按照自己的理解整理了一遍&#xff0c;发现之前不太明白的地方基本上想明白了&#xff0c;如有不正确的地方&#xff0c;欢…

spring(13)缓存数据

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“Spring In Action&#xff08;中/英文版&#xff09;”&#xff0c;旨在review “spring(13)缓存数据” 的相关知识&#xff1b;2&#xff09;缓存&#xff1a;缓存可以存储经常会用到的信息&#xff0c;这样每次需…

漫画:什么是分布式事务

转载自 漫画&#xff1a;什么是分布式事务&#xff1f;————— 第二天 —————————————————假如没有分布式事务 在一系列微服务系统当中&#xff0c;假如不存在分布式事务&#xff0c;会发生什么呢&#xff1f;让我们以互联网中常用的交易业务为例子&#…

Spring4.2.6+SpringMVC4.2.6+MyBatis3.4.0 整合

【0】README0&#xff09;本文旨在 review Spring4.2.6SpringMVC4.2.6MyBatis3.4.0 整合过程&#xff1b;1&#xff09;项目整合所涉及的源代码&#xff0c;please visit https://github.com/pacosonTang/MyBatis/tree/master/spring4mvc_mybatis32&#xff09;由于晚辈我还不…

ibatis(0)ibatis 与 mybatis 简述

【0】README:1&#xff09;本文旨在给出 ibatis 与 mybatis 简述&#xff0c;简述内容转自 如下链接&#xff1b;【1】main contents1&#xff09;apache offical declarationhttp://ibatis.apache.org/.apache ibatis is retired at the apache software foundation (2010/06/…

Java面试大纲

转载自 金三银四跳槽季&#xff0c;Java面试大纲跳槽时时刻刻都在发生&#xff0c;但是我建议大家跳槽之前&#xff0c;先想清楚为什么要跳槽。切不可跟风&#xff0c;看到同事一个个都走了&#xff0c;自己也盲目的面试起来&#xff08;期间也没有准备充分&#xff09;&#x…

ibatis(1)ibatis的理念

【0】README1&#xff09;本文部分内容转自 “ibatis in action”&#xff0c;旨在 review “ibatis的理念” 的相关知识&#xff1b;【1】结合所有优秀思想的混合型解决方案在现实世界中&#xff0c;混合型解决方案随处可见。将两个看上去相悖的思想在中间处巧妙结合&#xff…

究竟啥才是互联网架构“高并发”

转载自 究竟啥才是互联网架构“高并发”一、什么是高并发 高并发&#xff08;High Concurrency&#xff09;是互联网分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间…

ibatis(2)ibatis是什么

【0】README1&#xff09;本文部分内容转自 “ibatis in action”&#xff0c;旨在 review “ibatis是什么” 的相关知识&#xff1b;2&#xff09;intro to ibatis&#xff1a; ibatis 就是数据映射器&#xff0c;Martin Fowler在《企业应用架构模式》中&#xff0c;对 data m…

究竟啥才是互联网架构“高可用”

转载自 究竟啥才是互联网架构“高可用”一、什么是高可用 高可用HA&#xff08;High Availability&#xff09;是分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务&#xff0c;我们说…

maven(3)maven3.3.9使用入门

【0】README1&#xff09;maven 安装step1&#xff09;检查 jdk 是否安装且 环境变量 JAVA_HOME 是否设置&#xff1b;step2&#xff09;download maven&#xff1a; https://maven.apache.org/download.cgi?Preferredftp://mirror.reverse.net/pub/apache/step3&#xff09;…