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也是有映射(输 ...
随机推荐
- 多网卡的bond模式-把多个物理网卡绑定成一个逻辑上的网卡
参考: 多网卡的7种bond模式原理 如何实现网卡bond
- 【6.12校内test】T2 子集
这道题大概是这三道题里最简单的啦 但这阻止不了我废的脚步 [问题描述] 对于 n=4 时,对应的集合 s={4,3,2,1},他的非空子集有 15 个依次如下: {1} {2} {1,2} {3} { ...
- go语言中os/signal包的学习与使用
package main; import ( "os" "os/signal" "fmt" ) //signal包中提供了两个函数 //No ...
- Kibana多用户创建及角色权限控制
1 介绍 ELK日志管理属于基础设施平台,接入多个应用系统是正常现象,如果接入多个系统的索引文件没有进行权限划分,那么很大程度会出现索引文件误处理现象,为了避免这种情况发生,多用户及权限设置必不可少. ...
- ds replicas是什么
以上是我百度的答案.很显然,这个对于初学者很不友好,中文的每一个靠谱的,英文的都TM是how 和 why .But 我要 what! 所以只能自己搞,自己琢磨,搞完分享出来,助力后来者不掉坑,有所查. ...
- Delphi 布尔型数据
- saiku数据实现实时更新
(1) # vim saiku-server/tomcat/webapps/ROOT/js/saiku/Settings.yaml 将 LOCALSTORAGE_EXPIRATION: 3600000 ...
- java面试(Web相关)06
1.JSP 和 servlet 有什么区别? JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式.servlet 和 JSP 最主要的不同点在于,servlet 的应用逻辑 ...
- 最简单的Android项目(添加jar文件)
如果项目需要引用第三方jar文件,需要对编译命令做一些改动. 首先在项目根目录创建libs目录,将需要的jar文件拷贝到里面. 编译过程中有两步需要改动. 编译java源文件时,需要添加class p ...
- linux批量设置部分文件与文件夹权限
批量设置web目录下文件.文件夹名为sitemap.xml.sitemap 属性为777 cd /www/web find ./ -name 'sitemap' -exec chmod -R 77 ...