Mybatis_4.接口类和XML同时使用
1.实体类User.java
public class User {
private int id;
private String name;
private int age;
//getter、setter...
}
2.接口类UserMapper.java
public interface UserMapper {
//添加
public int addUser(User user) throws Exception;
//删除
public void deleteUser(int id) throws Exception;
//修改
public void updateUser(User user) throws Exception;
//查询
public User queryUser(int id) throws Exception;
//查询所有的用户
public List<User> queryAllUser() throws Exception;
}
3.映射文件userMapper.xml
<mapper namespace="com.test.xmlAndAnno.UserMapper">
<!-- 自定义结果集 -->
<resultMap type="com.test.bean.User" id="userMap">
<id property="id" column="id" javaType="java.lang.Integer"/>
<result property="name" column="name" javaType="java.lang.String"/>
<result property="age" column="age" javaType="java.lang.Integer"/>
</resultMap>
<!-- 增删改查标签的id属性必须和接口中的方法名相同,
id属性值必须是唯一的,不能够重复使用,
parameterType属性表示形参参数类型,
resultType属性表示查询时返回的结果集类型
-->
<!-- userGeneratedKeys(仅对insert有用),会告诉Mybatis使用JDBC的getGeneratedKeys方法来取出由MySQL内部生成的主键,默认值false。
keyProperty(仅对insert有用)标记一个属性,mybatis会通过getGeneratedKey或者通过insert语句的selectKey子元素设置值,默认不设置。
-->
<insert id="addUser" useGeneratedKeys="true" keyProperty="id" parameterType="com.test.bean.User">
insert into users (name,age) values (#{name},#{age})
</insert>
<delete id="deleteUser" parameterType="int">
delete from users where id = #{id}
</delete>
<update id="updateUser" parameterType="com.test.bean.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<select id="queryUser" parameterType="int" resultType="com.test.bean.User" >
select * from users where id = #{id}
</select>
<select id="queryAllUser" resultMap="userMap">
select * from users
</select>
</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>
<!-- 映入外部配置文件 -->
<properties resource="mysql.properties"></properties>
<!-- 配置mybatis运行环境,development:开发模式,work:工作模式-->
<environments default="development">
<environment id="development">
<!-- type=“jdbc”表示使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- mybatis提供了三种数据源类型,POOLED,UNPOOLED,JNDI -->
<!-- POOLED:表示支持JDBC数据源的连接池 -->
<!-- UNPOOLED:表示不支持JDBC数据源的连接池 -->
<!-- JNDI:表示支持外部数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 基于注解的增删改查,注册接口,注意Mapper标签的属性为class,引入xml文件是resource -->
<mapper class="com.test.withAnno.UserMapper"/>
</mappers>
<!-- 为实体类定义别名,简化sql映射xml文件中的引用 -->
<!-- <typeAliases>
<typeAlias type="com.test.bean.User" alias="_User"/>
</typeAliases> -->
</configuration>
5.数据库配置文件mysql.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis1?useUincode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
6.测试类
/**
* @author:滕鹏飞
* @version: 1.0
* @Created on: 2018-9-2 下午9:20:14
* 类说明
*/
public class Test {
public static void main(String[] args) {
//addUser();
//deleteUser();
//updateUser();
queryUser();
queryAllUser();
}
//添加
public static void addUser() {
SqlSession session = DBUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User u = new User("张三",21);
try {
mapper.addUser(u);
session.commit();
System.out.println(u.toString());
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
//删除
public static void deleteUser() {
SqlSession session = DBUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
try {
mapper.deleteUser(2);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
//修改
public static void updateUser() {
SqlSession session = DBUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
try {
User user = new User(3,"Tom",24);
mapper.updateUser(user);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
//查询
public static void queryUser() {
SqlSession session = DBUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
try {
User user = mapper.queryUser(4);
session.commit();
System.out.println(user.toString());
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
//查询所有
public static void queryAllUser() {
SqlSession session = DBUtil.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
try {
List<User> users = mapper.queryAllUser();
session.commit();
System.out.println(users);
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
}
注意:
注意:同时使用接口类和XML文件时,在映射文件中使用的namespace属性,
则在配置文件中只需要引入映射文件即可,如果没有使用namespace属性,
则需要同时引入接口类和映射文件
Mybatis_4.接口类和XML同时使用的更多相关文章
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- MyBatis Spring整合配置映射接口类与映射xml文件
本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...
- 简单Java类与XML之间的转换
需要的jar包:xmlpull_1_0_5.jar,xstream-1.4.1.jar) 1.工具类XstreamUtil package com.learn.util; import com.tho ...
- PHP接口类interface的正确使用方法
对于那些初学PHP语言的人来说,对于PHP的接口类也许了解的还不是很深入,接下来我们就来具体讲述PHP接口类interface的使用方法. 如何正确运用PHP XMLReader解析XML文档 深入解 ...
- c#通用配置文件读写类(xml,ini,json)
.NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...
- Mybatis逆向工程生成po、mapper接口、mapper.xml
Mybatis逆向工程生成po.mapper接口.mapper.xml 一.新建一个maven工程 请查看我的另一篇博客:<使用idea创建一个maven工程> 二.引入所需依赖 需要my ...
- ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题
原文:ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MrTra ...
- OpenCV FileStorage类读写XML/YML文件
本文转自:http://www.cnblogs.com/summerRQ/articles/2524560.html 在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件, ...
- .Net WebApi接口之Swagger UI 隐藏指定接口类或方法
swagger的一个最大的优点是能实时同步api与文档,但有些时候我们不想全部公开接口,而要隐藏或屏蔽一些接口类或方法,swagger也是支持的,只需要设置一下DocumentFilter方法. 第一 ...
随机推荐
- [经验交流] k8s mount 文件到容器目录
docker 的 volume 可以 mount 单个文件(比如单个配置文件)到容器目录.同时保留原目录的内容.放到 k8s 中,结果却变成了这样:k8s 的 volume 把文件mount 到容器目 ...
- request模块
一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 # 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模 ...
- Large-Margin Softmax Loss for Convolutional Neural Networks
paper url: https://arxiv.org/pdf/1612.02295 year:2017 Introduction 交叉熵损失与softmax一起使用可以说是CNN中最常用的监督组件 ...
- excel2json
原文链接 在游戏项目中一般都需要由策划制作大量的游戏内容,其中很大一部分是使用Excel表来制作的.于是程序就需要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过 ...
- 015_ICMP专项研究监控
一.数据demo cat /proc/net/snmp Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagr ...
- jqGrid基础写法
$("#jqGrid").jqGrid({ url: baseURL + 'sys/scheduleLog/list', datatype: "json", c ...
- 不使用synchronized和lock 锁实现线程安全单例
单例实现方式一,锁机制 public class Singleton { private static Singleton singleton=null; public Singleton() { } ...
- vscode 同步配置插件
目前所用: 1.25.1版本 1,删除 vscode 客户端, 卸载vscode应用软件删除不了用户配置信息,,下载安装还会发现之前下载的插件和个人配置信息都还会重新加载出来 应先彻底清除已安装的插件 ...
- xpath定位动态iframe
使用xpath定位 driver.switch_to.frame(driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS ...
- 利用python进行数据加载和存储
1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...