mybatis的CUID
UserMapper接口
public interface UserMapper {//获取全部用户List<User> getUserList();//根据ID查询用户User getUserById(int id);//插入一个用户int addUser(User user);//使用map类型插入用户,不需要知道类型int addUser2(Map<String,Object> map);//修改用户int updateUser(User user);//删除一个用户int deleteUser(int id);
}
User实体类
public class User {private int id;private String name;private String pwd;public User() {}public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}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 String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';}
}
userMapper.xml
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.zhbit.dao.UserMapper"><!--select查询语句 id为方法的名字--><select id="getUserList" resultType="com.zhbit.pojo.User">select * from mybatis.user</select><select id="getUserById" parameterType="int" resultType="com.zhbit.pojo.User">select * from mybatis.user where id = #{id}</select><insert id="addUser" parameterType="com.zhbit.pojo.User">insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})</insert><!--通过map来传递参数,values后面的参数名字可以自定义了--><insert id="addUser2" parameterType="map">insert into mybatis.user (id,name,pwd) values (#{userId},#{userName},#{passWord})</insert><update id="updateUser" parameterType="com.zhbit.pojo.User">update mybatis.user set name = #{name},pwd=#{pwd} where id=#{id} ;</update><delete id="deleteUser" parameterType="int">delete from mybatis.user where id = #{id}</delete>
</mapper>
mybatis-config.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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=true&userUnicode=true&chartacterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><mapper resource="com/zhbit/dao/userMapper.xml"/></mappers>
</configuration>
MybatisUtils.class
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static{//使用mybatis第一步:获取sqlSessionFactory对象try {String resource="mybatis-config.xml";InputStream inputStream = null;inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}//有了sqlSeesionFactory之后,就可以从factory中获取sqlSession实例了//sqlSession完全包含了面向数据库执行SQL命令所需的所有方法public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();}
}
UserMapperTest.class
public class UserMapperTest {@Testpublic void test(){//第一步:获取SqlSession对象try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {//执行SQLUserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<User> userList = userMapper.getUserList();for (User user : userList) {System.out.println(user);}//关闭SqlSession//sqlSession.close();}}@Testpublic void getUserById(){try(SqlSession sqlSession =MybatisUtils.getSqlSession()){//执行SQLUserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = userMapper.getUserById(1);System.out.println(user);}}@Testpublic void addUser(){try(SqlSession sqlSession =MybatisUtils.getSqlSession()){//执行SQLUserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.addUser(new User(4,"小绿","123"));//提交事务sqlSession.commit();}}@Testpublic void addUser2(){try(SqlSession sqlSession = MybatisUtils.getSqlSession()){UserMapper mapper = sqlSession.getMapper(UserMapper.class);Map<String,Object> map = new HashMap<String,Object>();map.put("userId",4);map.put("userName","小灰");map.put("passWord","123456");mapper.addUser2(map);sqlSession.commit();}}@Testpublic void updateUser(){SqlSession sqlSession=MybatisUtils.getSqlSession();try{//执行SQLUserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.updateUser(new User(4,"小黑","456"));//提交事务sqlSession.commit();}catch(Exception e){e.printStackTrace();}finally{sqlSession.close();}}@Testpublic void deteleUser(){try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.deleteUser(4);sqlSession.commit();}}
}
mybatis的CUID相关推荐
- 二、mybatis 多级关联映射配置
一.目的 1.上一篇写了mybatis基本的CURD,接着上一篇实现一个 多级关联 获取一篇文章以及该文章的所有评论.评论的所有回复 二.三张表 news(文章表)comment(评论表)reply( ...
- mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string
mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...
- MyBatis的插入后获得主键的方式
需求: 使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法: 在mapper中指定keyProperty属性,示例如下: <insert id=" ...
- mybatis使用注解开发
mybatis使用注解开发 面向接口编程 在之前我们是通过面向对象编程,但是在真正开发的时候我们会选择面向接口编程. 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的 ...
- mybatis ResultMap
ResultMap 解决属性名和字段的名称不一致的问题. 查询为null的问题 创建java实体类: public class User {private int id; //idprivate St ...
- mybatis配置文件解析
mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...
- mybatis CRUD操作
mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...
- java mybatis基础
java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...
- mybatis的资源过滤错误及xml文件编码错误
mybatis 解决maven项目内资源过滤的问题 写的配置文件无法被导出或者生效的问题. 解决方案: <build><resources><resource>&l ...
最新文章
- 计算机利用公式计算实发工资怎么弄,2019新个税Excel计算器公式 助你轻松算出工资...
- icaclient citrix
- 透过浏览器看HTTP缓存(转)
- MySQL常用维护管理工具
- VTK修炼之道71:交互与Widget_观察者/命令模式
- oauth2.0授权码_OAUTH 2.0授权码授予
- python源代码现成重用大全
- Kafka Producer源码简述
- 【Android】Binder机制
- WIN10系统和压缩内存占用磁盘过高的解决方案(亲测有效)
- ASP.NET中 CheckBox(复选框)的使用
- Spring使用过程中遇到的一些问题
- java字符串排序,(不使用sort)
- qt 实现、区分鼠标单击,双击事件
- 企业级POS收银系统源码(客户端+后台)
- python爬取58同城二手房信息
- virtualbox win7虚拟机启动exe提示“DX11 could not switch resolution”解决方案
- 【摘抄】为什么要学C语言
- 冰山理论(理解笔记)
- 网站被恶意攻击了改怎么办?如何进行防护呢
热门文章
- 进销存软件|云ERP仓库管理系统软件源码开源可扫码
- CodeGear2007到CodeGear2009全系列自动破解工具更新到v1.0.0.237
- 山科大离散数学期末考试_西安电子科技大学网络与继续教育学院 2019学年上学期 《离散数学》期末考试试题 (......
- 圣戈班发布全新本地化生物工艺袋产品
- zz--WINCE TCPMP应用四:利用TCPMP插件开发程序
- Apache Solr 中文分词
- 次世代游戏建模学习,带你轻松认识并掌握!零基础小白必备
- 社群运营5招激活杀手锏、5个沟通技巧、5大目的
- ADSP-21489的开发详解:VDSP+自己编程写代码开发(1-如何来做21489和21479的开发?简单说两句)
- 免费报表XDOC从入门到精通(一)简介