Mybatis学习笔记之---编写dao实现类的CRUD
Mybatis编写dao实现类的CRUD
1.pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency> </dependencies>
2.SqlMapperConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPEconfiguration PUBLIC"-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis的主配置文件--> <configuration> <!--配置环境--> <environments default="mysql"> <!--配置mysql环境--> <environment id="mysql"> <!--配置事务的类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <!--配置连接数据库的4个基本信息--> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/zml?useUnicode=true&characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </dataSource> </environment> </environments> <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件--> <mappers> <mapper resource="dao/UserDao.xml"></mapper> </mappers> </configuration>
3.Users.java
package entity; public class Users { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "Users{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
4.UserDao.java
package dao; import entity.Users; import java.util.List; public interface UserDao { List<Users> findAll(); Users find(int id); void save(Users users); void update(Users users); void delete(int id); List<Users> findVague(String name); int count(); }
5.UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPEmapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dao.UserDao"> <!--查询所有--> <select id="findAll" resultType="entity.Users"> select * from users </select> <!--根据ID查询--> <select id="find" resultType="entity.Users"> select * from users where id=#{id} </select> <!--增加--> <insert id="save" parameterType="entity.Users"> <!--查询新增用户的ID--> <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER"> select last_insert_id() </selectKey> insert into users(username,password) values(#{username},#{password}) </insert> <!--根据ID进行修改--> <update id="update" parameterType="entity.Users"> update users set username=#{username},password=#{password} where id=#{id} </update> <!--根据ID进行删除--> <delete id="delete" parameterType="entity.Users"> delete from users where id=#{id} </delete> <!--模糊查询--> <select id="findVague" resultType="entity.Users"> -- select * from users where username like '%${value}%' select * from users where username like #{name} </select> <!--查询用户总数--> <select id="count" resultType="int"> select count(id) from users </select> <!--将实体类封装到另一个实体类中的模糊查询--> <select id="findVo" resultType="entity.Users"> select * from users where username like #{users.username} </select> </mapper>
6.UserDaoImpl.java
package dao.impl; import dao.UserDao; import entity.Users; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import java.util.List; public class UserDaoImpl implements UserDao { private SqlSessionFactory factory; public UserDaoImpl(SqlSessionFactory factory){ this.factory=factory; } @Override public List<Users> findAll() { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 List<Users> list=session.selectList("dao.UserDao.findAll"); //3.释放资源 session.close(); return list; } @Override public Users find(int id) { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 Users u=session.selectOne("dao.UserDao.find",id); //3.释放资源 session.close(); return u; } @Override public void save(Users users) { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 session.insert("dao.UserDao.save",users); session.commit(); //3.释放资源 session.close(); } @Override public void update(Users users) { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 session.update("dao.UserDao.update",users); session.commit(); //3.释放资源 session.close(); } @Override public void delete(int id) { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 session.delete("dao.UserDao.delete",id); session.commit(); //3.释放资源 session.close(); } @Override public List<Users> findVague(String name) { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 List<Users> u=session.selectList("dao.UserDao.findVague",name); session.commit(); //3.释放资源 session.close(); return u; } @Override public int count() { //1.根据factory获取SqlSession对象 SqlSession session=factory.openSession(); //2.调用SqlSession中的方法,实现查询列表 int id=session.selectOne("dao.UserDao.count"); session.commit(); //3.释放资源 session.close(); return id; } }
7.UserTest.java
package test; import dao.UserDao; import dao.impl.UserDaoImpl; import entity.Users; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class UserTest { private InputStream in; private UserDao userDao; @Before public void init() throws IOException { //1.读取配置文件 in= Resources.getResourceAsStream("SqlMapperConfig.xml"); //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); SqlSessionFactory factory=builder.build(in); //3.使用工厂对象,创建dao对象 userDao=new UserDaoImpl(factory); } @After public void destroy() throws IOException { //6.释放资源 in.close(); } /** * 查询所有 * @throws IOException */ @Test public void findall() throws IOException { //5.使用代理对象执行方法 List<Users> users=userDao.findAll(); for(Users u:users){ System.out.println(u); } } /** * 增加 */ @Test public void save(){ Users users=new Users(); users.setUsername("111"); users.setPassword("456"); userDao.save(users); } /** * 根据ID查询并修改 */ @Test public void update(){ Users u=userDao.find(15); u.setPassword("126"); u.setUsername("小喵"); userDao.update(u); } /** * 根据id进行删除 */ @Test public void delete(){ userDao.delete(24); } /** * 模糊查询,查询所有名字中有小的用户 * @throws IOException */ @Test public void findVague() throws IOException { //5.使用代理对象执行方法 List<Users> users=userDao.findVague("%小%"); for(Users u:users){ System.out.println(u); } } /** * 查询用户总数 */ @Test public void count(){ int c=userDao.count(); System.out.println(c); } }
Mybatis学习笔记之---编写dao实现类的CRUD的更多相关文章
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
- 阶段3 1.Mybatis_02.Mybatis入门案例_3.mybatis注解开发和编写dao实现类的方式
注解的用法 直接创建一个新的项目 下一步直接next 然后finish即可 把之前项目01里面的代码直接复制过来 复制到我们02的注解的工程中 把01项目导入的依赖也都粘贴过来 再把测试类复制过去 复 ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- mybatis 学习笔记(三):mapper 代理开发 dao 层
mybatis 学习笔记(三):mapper 代理开发 dao 层 优势 通过使用mapper 代理,我们可以不需要去编写具体的实现类(使用 getMapper() 方法自动生成),只需编写接口即可, ...
- mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现
项目结构 基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...
- Mybatis学习笔记二
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
- mybatis 学习笔记(四):mybatis 和 spring 的整合
mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...
- mybatis学习笔记之基础复习(3)
mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...
随机推荐
- eclipse中svn的使用
1.在eclipse中添加SVN插件或者说直接利用eclipse软件中的help-install项进行网站在线下载也可 2.安装好SVN之后, 2.1.从SVN检出项目到本地 右击鼠标-选import ...
- 洛谷 P5043 树的同构 题解
题面 本题的难度其实不及紫题的难度.主要是在hash时的处理细节比较繁琐: 首先是树hash的模板: long long treehash(int u,int fa) { ]; ; ; for(int ...
- HDU 1257 最少拦截系统 最长递增子序列
HDU 1257 最少拦截系统 最长递增子序列 题意 这个题的意思是说给你\(n\)个数,让你找到他最长的并且递增的子序列\((LIS)\).这里和最长公共子序列一样\((LCS)\)一样,子序列只要 ...
- laravel5.5部署
一.环境: centos7 + apache2.6+mysql5.5+PHP7.2 确保php版本大于7.1,看帮助文档说是7就可以,但是我部署的时候提示要大于7.1,并且要装上必须的php扩展 PH ...
- javaweb:Response/Request的概述 (转发、重定向、get/post)转
请求响应流程图 1]response 1 response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletR ...
- Druid + spring 配置数据库连接池
1. Druid的简介 Druid是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...
- 【vsCode】识别.vue/一键生成.vue模板文件
1.安装插件Vetur 结果 ---> .vue代码识别彩标 2.配置.vue文件模板,以便快速一键生成格式化 2.1新建代码片段 File->Preferences->User S ...
- 这样讲 SpringBoot 自动配置原理,你应该能明白了吧
https://juejin.im/post/5ce5effb6fb9a07f0b039a14 前言 小伙伴们是否想起曾经被 SSM 整合支配的恐惧?相信很多小伙伴都是有过这样的经历的,一大堆配置问题 ...
- Linux学习--第八天--acl、SetUID、SetGID、chattr、lsattr、sudo
acl权限 文件只能有一个所属组 acl就是不管用户什么组了,直接针对某个文件给他特定权限. acl需要所在分区文件系统的支持. df -h #查看分区 dumpe2fs -h /dev/sda3 # ...
- 用python实现js语言里的特性
有大佬说:“搜 arraybuffer 的 polyfill 然后翻译成 python就行了” ...