Mybatis的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.UserVo.java
package entity;

public class UserVo {

    private Users users;

    public Users getUsers() {

        return users;

    }

    public void setUsers(Users users) {

        this.users = users;

    }

}
5.UserDao.java
package dao;

        import entity.UserVo;

        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();

     List<Users> findVo(UserVo vo);

}
6.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>
7.UserTest.java
package test;

import dao.UserDao;

import entity.UserVo;

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 SqlSession sqlSession;

    private UserDao UserDaoImpl;

    @Before

    public void init() throws IOException {

        //1.读取配置文件

        in= Resources.getResourceAsStream("SqlMapperConfig.xml");

        //2.创建SqlSessionFactory工厂

        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();

        SqlSessionFactory factory=builder.build(in);

        //3.使用工厂生产SqlSession对象

        sqlSession=factory.openSession();

        //4.使用SqlSession创建dao接口的代理对象

        UserDaoImpl=sqlSession.getMapper(UserDao.class);

    }

    @After

    public void destroy() throws IOException {

        //提交事务

        sqlSession.commit();

        //6.释放资源

        sqlSession.close();

        in.close();

    }

    /**

     * 查询所有

     * @throws IOException

     */

    @Test

    public void findall() throws IOException {

        //5.使用代理对象执行方法

        List<Users> users=UserDaoImpl.findAll();

        for(Users u:users){

            System.out.println(u);

        }

    }

    /**

     * 增加

     */

    @Test

    public void save(){

       Users users=new Users();

       users.setUsername("哈哈哈");

       users.setPassword("456");

       UserDaoImpl.save(users);

    }

    /**

     * 根据ID查询并修改

     */

    @Test

    public void update(){

        Users u=UserDaoImpl.find(15);

        u.setPassword("456");

        u.setUsername("小喵");

        UserDaoImpl.update(u);

    }

    /**

     * 根据id进行删除

     */

    @Test

    public void delete(){

        UserDaoImpl.delete(16);

    }

    /**

     * 模糊查询,查询所有名字中有小的用户

     * @throws IOException

     */

    @Test

    public void findVague() throws IOException {

        //5.使用代理对象执行方法

        List<Users> users=UserDaoImpl.findVague("%小%");

        for(Users u:users){

            System.out.println(u);

        }

    }

    /**

     * 查询用户总数

     */

    @Test

    public void count(){

        int c=UserDaoImpl.count();

        System.out.println(c);

    }

    /**

     * 将实体类封装到另一个实体类中的模糊查询

     */

    @Test

    public void findVo(){

        UserVo vo=new UserVo();

        Users users=new Users();

        users.setUsername("%小%");

        vo.setUsers(users);

        List<Users> list=UserDaoImpl.findVo(vo);

        for(Users u:list){

            System.out.println(u);

        }

    }

}

Mybatis学习笔记之---CRUD(增删改查)的更多相关文章

  1. EF学习笔记-1 EF增删改查

    首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...

  2. mybatis学习(五)——增删改查及自增主键的获取

    一.mybatis的增删改查 1.修改hotelMapper接口 package com.pjf.mybatis.dao; import com.pjf.mybatis.po.Hotel; publi ...

  3. 【JAVAWEB学习笔记】20_增删改查

    今天主要是利用三层架构操作数据库进行增删查改操作. 主要是编写代码为主. 附图: 前台和后台 商品的展示 修改商品

  4. HTML5+ 学习笔记3 storage.增删改查

    //插入N条数据 function setItemFun( id ) { //循环插入100调数据 var dataNum = new Number(id); for ( var i=0; i< ...

  5. Python学习笔记-列表的增删改查

  6. [学习笔记] Oracle基础增删改查用法

    查询 select *|列名|表达式 from 表名 where 条件 order by 列名 select t.* from STUDENT.STUINFO t where t.stuname = ...

  7. Mybatis之基于XML的增删改查

    这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...

  8. SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查

    SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...

  9. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查

    笔记 2.使用Mybatis注解开发视频列表增删改查     讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句              1.控制台打印sql语句      ...

  10. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

随机推荐

  1. etcd集群添加节点

    查看当前集群节点信息 # etcdctl member list --write-out=table +------------------+---------+------------------- ...

  2. spring boot-3.原理探究

    新建的项目结构如下图: 1.POM 文件 项目会默认依赖 spring-boot-starter-parent 项目 <parent> <groupId>org.springf ...

  3. HTTP协议的概念作用和特点

    Web交互的基本流程 请求:客户端根据服务器地址把数据发送给服务器的过程叫请求. 相应:服务器将请求的处理结果发送给浏览器的过程叫响应. 什么是HTTP? 概念:超文本传输协议. HTTP有什么作用? ...

  4. MyBatis Mapper XML 详解

    MyBatis Mapper XML 详解 MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JD ...

  5. @OneToMany 一对多 通过表之间的链接

    https://blog.csdn.net/qq_38157516/article/details/80146547 一对多 一个人对多张卡,但是一张卡只能对应一个人,典型的一对多关系,下面就用One ...

  6. Python自学笔记之计算机基础

    osi七层协议应用层-表示层-会话层-传输层-网络层-数据链路层-物理层 无线网协议 ethernet 物理层:网线,光纤 数据链路层:arp协议 mac地址,广播 在广播域内传播 网络层:ip地址标 ...

  7. ActiveMQ消息过滤

    前言 ActiveMQ提供了一种机制,使用它,消息服务可根据消息选择器中的标准来执行消息过滤.生产者可在消息中放入应用程序特有的属性,而消费者可使用基于这些属性的选择标准来表明对消息是否感兴趣.这就简 ...

  8. 运维dig语法

    dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 1 dig(选项)(参数) 选项 1 @<服务器地址>:指定进行域名解析的域名服务器: 2 -b<ip地址&g ...

  9. char转int,int转char

    char转int 1) '; if (Character.isDigit(ch)){ // 判断是否是数字 int num = Integer.parseInt(String.valueOf(ch)) ...

  10. Apache ab测试工具使用方法(无参、get传参、post传参)(转)

    转自Apache ab测试工具使用方法(无参.get传参.post传参) Ab测试工具是apache自带的测试工具,具有简单易上手的特性,下面我总结一下我的使用方法,首先去官方下载apache程序包, ...