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&amp;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的更多相关文章

  1. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  2. 阶段3 1.Mybatis_02.Mybatis入门案例_3.mybatis注解开发和编写dao实现类的方式

    注解的用法 直接创建一个新的项目 下一步直接next 然后finish即可 把之前项目01里面的代码直接复制过来 复制到我们02的注解的工程中 把01项目导入的依赖也都粘贴过来 再把测试类复制过去 复 ...

  3. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  4. mybatis 学习笔记(三):mapper 代理开发 dao 层

    mybatis 学习笔记(三):mapper 代理开发 dao 层 优势 通过使用mapper 代理,我们可以不需要去编写具体的实现类(使用 getMapper() 方法自动生成),只需编写接口即可, ...

  5. mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

    项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...

  6. Mybatis学习笔记二

    本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...

  7. Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)

    一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...

  8. mybatis 学习笔记(四):mybatis 和 spring 的整合

    mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...

  9. mybatis学习笔记之基础复习(3)

    mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...

随机推荐

  1. Linux系统装mycat

    最近在Linux系统中装载了一下mycut,记录过程以及所遇到的异常 首先是mycut的压缩包,直接放到linux中解压即可 链接:https://pan.baidu.com/s/1qo7z4tNvk ...

  2. 微信内置浏览器不支持 onclick 如何解决?(原因是因为内面中的内容或者标签大部分是动态生成的)

    使用了很多onclick事件,但是在Android的微信内置浏览器中,onclick是不能被执行的. 开始的写法是: // $(".contentPic").click(funct ...

  3. mysql数据库常见错误代码列表

    mysql出错代码列表1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1 ...

  4. ros基础知识总结

    参考于:ros官网教程 实验楼:ros机器人操作系统自主学习实验 基础知识 1 一个catkin程序包由什么组成? 一个程序包要想称为catkin程序包必须符合以下要求: 该程序包必须包含catkin ...

  5. 日语能力考试N2必备训读动词

    日语能力考试N2必备训读动词 ア合う——あう——「自」合一.合到一起.准确味わう——あじわう——「他」品味.品尝預かる——あずかる——「他」照顾.保管.承担預ける——あずける——「他」寄存.处理难以了 ...

  6. (转) oracle清空数据库脚本

    在开发过程中,可能经常需要重新初始化数据库,在初始化之前,我们肯定希望不再有以前的老表.存储过程等用户对象,用下面的教本就可以做到这一点: BEGIN     FOR rec IN     (SELE ...

  7. 最简单的Android项目(添加jar文件)

    如果项目需要引用第三方jar文件,需要对编译命令做一些改动. 首先在项目根目录创建libs目录,将需要的jar文件拷贝到里面. 编译过程中有两步需要改动. 编译java源文件时,需要添加class p ...

  8. 机器学习四 SVM

    目录 引言 SVM 线性可分SVM 线性不可分SVM Hinge Loss 非线性SVM 核函数 总结 参考文献 引言 在深度神经网终(Deep Neural Network, DNN) 大热之前, ...

  9. html中全选反选

    <!--第一层--> <div class="first"> <div class="first_top"> <img ...

  10. 3.Pod控制器应用进阶

    一.Pod的生命周期 init container -- Post start  --  running -- pre stop -- main container 创建Pod经历的过程:->a ...