java-web的mybatis的学习

 idea开发必须是把Mapper文件与配置文件放到Resources标记的classpath目录下,eclips好像放到哪都行指定好路径就可以了,

maven里面做好配置resources的路径,不然更新依赖  工程结构标记又没了

<build>
<resources>
<resource>
<directory>src/main/java/Resources</directory>
</resource>
</resources>
</build>

1.原生使用sqlsessionFcatory去做数据库操作,很麻烦

    @Testpublic void qeryByNameTest() throws IOException {//加载核心配置文件InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");//创造sqlsessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();List<User> list= sqlSession.selectList("user.queryByName","王五");for (User u:list){System.out.println(u.toString());}

2.使用mapper动态代理由mybatis根据你的 mapper类的接口名与映射文件里面的id名一致,指明了namespace的是哪个mapper类即可

public interface UserMapper {//遵循四个原则//接口 方法名  == User.xml 中 id 名//返回值类型  与  Mapper.xml文件中返回值类型要一致//方法的入参类型 与Mapper.xml中入参的类型要一致//命名空间 绑定此接口public User queryById(Integer id);
}@Testpublic  void  userMapperTest(){InputStream inputStream = null;{try {inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException e) {e.printStackTrace();}}//创造sqlsessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession= sqlSessionFactory.openSession();UserMapper userMapper=sqlSession.getMapper(UserMapper.class);User user= userMapper.queryById(10);System.out.println(user);
}

 

 SqlMapConfig.xml
<?
xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- 是用resource属性加载外部配置文件 比如jdbc信息,公共常量配置信息--><properties resource="jdbc.properties"></properties> <!--配置别名 方便开发中的 (多半的返回值与参数值是实体类)使用简单的缩写类名,而不是全路径 在就可以使用设置的别名了 别名大小写不敏感--><typeAliases><!--<typeAlias type="com.web.mybatis.pojo.User " alias="User"></typeAlias>--><!--扫描此包 及子包下所有的类文件--><package name="com.web.mybatis.pojo" ></package></typeAliases><!-- 和spring整合后 environments配置将废除 --><environments default="development"><environment id="development"><!-- 使用jdbc事务管理 可配置数据库连接池或者 使用上面properties里面的信息${username}--><transactionManager type="JDBC" /><!-- 数据库连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /><property name="username" value="root" /><property name="password" value="123456" /></dataSource></environment></environments> <!--告诉你的sql mapper文件在哪 这个sqlMapConfig做统一管理--> <mappers><!--注册指定包下的所有mapper接口 使用iDEA要在resources目录下去存放mapper文件--><mapper resource="Mapper/UserMapper.xml" ></mapper><!--如:<package name="cn.web.mybatis.mapper"/>--> <!--注意: 此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。&ndash;&gt;--> </mappers></configuration>




UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--mapper文件就是写sql语句的,mybatis只需要程序员关注sql语句本身-->
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 比如queryById在两个mapper xml都有这个id,为了区分使用namespace -->
<mapper namespace="com.web.mybatis.mapper.UserMapper"><select id="queryById" parameterType="Integer" resultType="User">select  * from user where  id=#{v}
</select><!-- //根据用户名称模糊查询用户列表#{}    select * from user where id = ?    占位符  ? ==  '五'${}    select * from user where username like '%五%'  字符串拼接  --><!--&#45;&#45;        select  *  from `user` where username like  #{name}--><select id="queryByName" parameterType="String" resultType="user">select  *  from `user` where username like  '%${value}%'</select><!-- 保存用户 --><!-- selectKey 标签实现主键返回 --><!-- keyColumn:主键对应的表中的哪一列 --><!-- keyProperty:主键对应的pojo中的哪一个属性 --><!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql --><!-- resultType:设置返回的id的类型 --><insert id="saveUser" parameterType="user"><selectKey keyColumn="id" keyProperty="id" resultType="Int" order="AFTER">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO `user`(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address})</insert><update id="updateUserById" parameterType="user">UPDATE `user` SETusername = #{username}  WHERE id = #{id}</update><!-- 删除用户 --><delete id="deleteUserById" parameterType="int">delete from user whereid=#{id}</delete>
</mapper>
 

 

 

 

 

 

转载于:https://www.cnblogs.com/hejunhong/p/10341999.html

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

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

相关文章

android 9格式吗,Android Studio中关于9-patch格式图片的编译错误

C&num;基础知识回顾-- 反射(3)C#基础知识回顾-- 反射(3) 获取Type对象的构造函数: 前一篇因为篇幅问题因为篇幅太短被移除首页,反射这一块还有一篇“怎样在程序集中使用反射”, 其他没有什么可以写的了,前两篇主要是铺垫, ...沙盒操作的核心函数 - NSSearchPathForDirect…

[Leedcode][JAVA][第85题][第221题][最大正方形][动态规划]

【问题描述】[第221题][最大正方形][中等] 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大/长方形正方形&#xff0c;并返回其面积。示例:输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 长方形 输出: 6 正方形 输出: 4【解答思路】 1. 长方形 暴力 时间…

java学习(176):第一个xml的编写

<?xml version"1.0" encoding"UTF-8"?> <stdents><!--每个student表示一个学生对象--><student code"stu001"><name>歌谣</name><birth>1996-09-09</birth><sex>男</sex><adr…

次时代各制作插件使用方案以及技巧 包括UV 烘焙 减面等

次世代游戏的到来&#xff0c;使游戏行业向前迈进了一大步。次世代本来代表的是拥有更高cpu硬件设施的电视游戏&#xff0c;即戴着头盔能感到wii拳击的震动、拿着拳套能感应阴森恐怖的氛围。绝对让玩家融入气氛的Xbox360的《生化危机5》还带有场景破坏&#xff0c;能打下一片墙…

java学习(177):获取应用程序的路径

import javax.tools.Tool; import java.net.URLDecoder;//获取类路径 public final class test132 {public static String getClassPath(){String pathtest132.class.getClassLoader().getResource( "" ).getPath().toString();try {return URLDecoder.decode( path…

[Leedcode][JAVA][第69题][x的平方根][二分查找][数学]

【问题描述】 实现 int sqrt(int x) 函数。计算并返回 x 的平方根&#xff0c;其中 x 是非负整数。由于返回类型是整数&#xff0c;结果只保留整数的部分&#xff0c;小数部分将被舍去。输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数&#xff0c;小数部…

K-D Tree 学习笔记

K-D Tree 学习笔记 最近看了一下k-NN然后它说如果特征空间维数比较低的时候用K-D Tree来求k近邻比较快所以就来补一下学OI时没学的K-D Tree假装写一个学习笔记吧。 是什么&#xff1f; 是一个平衡二叉树 k1的时候就是一只BST k>1的话&#xff0c;每一层换一维来分割 就是用许…

html将excel数据自动导入到网页,如何把excel表中的数据自动输入到网页中

怎么把excel表中的数据自动输入到网页中因要给员工网上投工伤保险&#xff0c;员工资料在excel表中&#xff0c;现在在网上投保险时只能一笔笔的复杂粘贴到网页中&#xff0c;有没有办法能直接把excel表中的资料自动输入到网页中的对应的表格中呢&#xff1f;请知道的朋友说下方…

高可用的 MFS 文件分布式系统(Drdb+heartbeat+MFS )

理论拓扑 环境准备&#xff1a; N 台 Linux 测试服务器 操作系统版本 CentOS 6.5 32bit ***系统分区要求&#xff1a;需要为格式化的空分区*** IP 地址&#xff1a; mfsmaster&#xff1a;10.3.0.81 心跳 ip 192.168.1.11 mfsbackup&#xff1a;10.3.0.82 …

k-means 聚类过程演示

k-means是一种非监督 &#xff08;从下图 0 当中我们可以看到训练数据并没有标签标注类别&#xff09;的聚类算法&#xff1a; K-Means clustering intends to partition n objects into k clusters in which each object belongs to the cluster with the nearest mean. This …

html网页距离顶部50像素,HTML5 教程之CSS Padding(填充)

CSS Padding(填充)CSS Padding(填充)属性定义元素边框与元素内容之间的空间。Padding(填充)当元素的 Padding(填充)(内边距)被清除时&#xff0c;所"释放"的区域将会受到元素背景颜色的填充。单独使用填充属性可以改变上下左右的填充。缩写填充属性也可以使用&#x…

PHP在金山游戏运营中的应用

PHP在金山游戏官方网站中的应用&#xff1a; ①、PHP团队协作开发&#xff1b; ②、PHP系统架构应用。 PHP在金山游戏运营系统 Keyes 中的应用&#xff1a; ①、分层架构设计模型&#xff1b; ②、通用性API接口设计 PHP在金山游戏官方网站中的应用 PHP团队协作开发环境 PHP…

[Leedcode][JAVA][第236题][二叉树的公共祖先][后序遍历][BFS]

【问题描述】 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可…

html鼠标离开点击停留,Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)...

本文实例总结了Javascript DOM事件操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;使用JavaScript可以对HTML页面上的各种事件进行监听&#xff0c;如鼠标点击/释放&#xff0c;鼠标悬停/离开&#xff0c;等等。效果图&#xff1a;代码&#xff1a;/p>"ht…

2019 wannafly winter camp day5-8代码库

目录 day55H div2 Nested Tree (树形dp)5F div2 Kropki (状压dp)5J div1 Special Judge (计算几何)5I div1 Sorting (线段树)5D div1 Doppelblock (搜索)5C div1 Division (主席树)5E div1 Fast Kronecker Transform (NTTorFFT)day77G div1&2 抢红包机器人 (拓扑序)7A div1…

蓝桥杯-凑算式

凑算式B DEFA --- ------- 10C GHI&#xff08;如果显示有问题&#xff0c;可以参见【图1.jpg】&#xff09;这个算式中A~I代表1~9的数字&#xff0c;不同的字母代表不同的数字。比如&#xff1a;68/3952/714 就是一种解法&#xff0c;53/1972/486 是另一种解法。…

天猫系统的流控降级

目录 1交易应用介绍 2系统挑战及应对 3优雅降级思路 4心得总结 交易应用介绍 购物袋 下单 确认订单 系统挑战及应对 挑战 • 高并发 • 低时延 • 容量有限 • 多外部系统协力&下单信息准确 目标 • 不挂掉 – 不因为容量原因导致网站瘫痪 – 自身的容量 – 后…

[剑指offer]面试题第[68-1]题[Leedcode][JAVA][第235题][二叉搜索树的最近公共祖先][递归][BFS]

【问题描述】[第235题][二叉搜索树的最近公共祖先][简单] 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖…

html5 应用框架,基于HTML5移动应用框架的研究及应用

摘要&#xff1a;随着3G网络的技术的成熟,以及4G网络的到来,移动设备的普及,移动互联网得到了空前的发展,与此同时,伴随移动互联网产生的移动应用也渗透到了大众生活的各方各面,比如微信,手机银行等等。但是当前移动设备的多样化,不同的厂商,不同的型号,更重要的是不同的平台,即…