美文网首页
使用MyBatis对表进行基础的增、删、改、查操作

使用MyBatis对表进行基础的增、删、改、查操作

作者: 花无缺_0159 | 来源:发表于2019-02-18 12:52 被阅读0次

【目录】
1 通过ID去查询一个用户
2 通过用户名模糊查找匹配的用户列表
3 完成添加用户
4 修改用户
5 根据id删除用户

1 通过ID去查询一个用户

创建User表 插入一些数据 项目目录结构

sqlMapConfig.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
<configuration>

  <environments default="development">
    <environment id="development">
    <!-- 使用jdbc的事务 -->
      <transactionManager type="JDBC"/>
      <!-- 使用连接池 连接数据库 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/database?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
      </dataSource>
    </environment>
  </environments>
  
 <!-- 配置映射器的位置 -->
  <mappers>
    <mapper resource="mapper/UserMapper.xml"/> 
   </mappers> 
   
</configuration>    

MyBatis主配置文件SqlMapConfig.xml的属性可以参考这里

UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserMapper">
    
    <!-- 根据id查询用户 -->
    <select id="selectUserById" parameterType="Integer" resultType="com.test.bean.User">
         select * from user where u_id = #{id}
    </select>

</mapper>

映射文件属性详解可以参见官方文档,这里不作过多解释,后续文章或有介绍。

新建测试类HelloMyBatis.java,代码如下:

package com.test.test;

import java.io.IOException;
import java.io.InputStream;

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.Test;

import com.test.bean.User;


public class HelloMyBatis {
    @Test
    // 通过ID 查询用户
    public void Test1() throws IOException {
        //配置文件
        String resource = "sqlMapConfig.xml";
        //读取配置文件
        InputStream in = Resources.getResourceAsStream(resource );
        
        //需要sqlSessionFactoryBulider
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        
        //创建sqlSessionfactory
        SqlSessionFactory ssf = ssfb.build(in);
         
        //生产一个sqlSession
        SqlSession session = ssf.openSession();
        
        //操作数据库
        //selectOne参数1:要操作的sql语句(和Usermapper.xml里的namespace要一致)   参数2 sql语句的参数
        User user = session.selectOne("UserMapper.selectUserById", 1);
        System.out.println(user);
    }

}

添加日志文件log4j.properties,代码如下:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

进行测试。

测试结果

2 通过用户名模糊查找匹配的用户列表

模糊查询会用到mybatis中的的#{}占位符和${}拼接符。注意他们的区别。

#{}占位符:占位
如果传入的是基本类型,那么#{}中的变量名称可以随意写
如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性…
${}拼接符:字符串原样拼接
如果传入的是基本类型,那么${}中的变量名必须是value
如果传入的参数是pojo类型,那么${}中的变量名称必须是pojo中的属性.属性.属性…
via:https://www.cnblogs.com/a8457013/p/7825412.html

使用拼接符容易造成sql注入,为了安全,我们一般用占位符进行模糊查询。
UserMapper.xml中添加代码如下:

    <!-- 根据名字模糊查询用户 -->
    <!-- #{} 占位符 尽量选用#{}来解决问题 '1' -->
    <!-- ${} 字符串拼接 or 1=1  王 -->
    <!-- order by ${} -->
    <select id="selectUserByName" parameterType="String" resultType="com.test.bean.User">
        <!-- SELECT * FROM USER WHERE u_username LIKE '%${value}%' -->
        SELECT * FROM USER WHERE u_username LIKE "%"#{name}"%"
    </select>

测试类HelloMyBatis.java中添加代码如下:

import java.util.List;
    @Test
    //通过用户名模糊查找匹配的用户列表
    public void Test2() throws IOException {
        String resource = "sqlMapConfig.xml";
        //读取配置文件
        InputStream in = Resources.getResourceAsStream(resource );
        
        //需要sqlSessionFactoryBulider
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        
        //创建sqlSessionfactory
        SqlSessionFactory ssf = ssfb.build(in);
        
        //生产一个sqlSession
        SqlSession session = ssf.openSession();
        
        //操作数据库
        List<User> list = session.selectList("UserMapper.selectUserByName", "老");
        
        for (User u : list) {
            System.out.println(u);
        }
    }

进行测试。

测试结果

3 完成添加用户

UserMapper.xml中添加代码如下:

    <!-- 添加用户 -->
    <insert id="insertUser" parameterType="com.test.bean.User">
        insert into user values( null, #{u_username} , #{u_password}, #{u_sex}, #{u_createTime}, #{u_cid} )
    </insert>

测试类HelloMyBatis.java中添加代码如下:

import java.util.Date;
    @Test
    //添加用户
    public void Test3() throws IOException {
        String resource = "sqlMapConfig.xml";
        //读取配置文件
        InputStream in = Resources.getResourceAsStream(resource );
        
        //需要sqlSessionFactoryBulider
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        
        //创建sqlSessionfactory
        SqlSessionFactory ssf = ssfb.build(in);
         
        //生产一个sqlSession
        SqlSession session = ssf.openSession();
        
        //设置数据
        User user = new User();
        user.setU_username("新来的");
        user.setU_password("123");
        user.setU_sex("女");
        user.setU_createTime(new Date());
        user.setU_cid(12);
        
        //操作数据库
        session.insert("UserMapper.insertUser", user);
        //提交事务
        //在MyBatis中,进行CRUD操作的时候,只有查找是不需要自己进行手动提交的,其他三种操作都需要进行手动提交。
        session.commit();
    }

进行测试。

测试结果

4 修改用户

UserMapper.xml中添加代码如下:

<!-- 修改用户 -->
    <update id="updateUser" parameterType="com.test.bean.User" >
        update user set u_username = #{u_username} where u_id = #{u_id}
    </update>

测试类HelloMyBatis.java中添加代码如下:

 @Test
    //修改用户
    public void Test4() throws IOException {
        String resource = "sqlMapConfig.xml";
        //读取配置文件
        InputStream in = Resources.getResourceAsStream(resource );
        
        //需要sqlSessionFactoryBulider
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        
        //创建sqlSessionfactory
        SqlSessionFactory ssf = ssfb.build(in);
         
        //生产一个sqlSession
        SqlSession session = ssf.openSession();
        

        User user = new User();
        user.setU_id(1);
        user.setU_username("老大");
        
        //操作数据库
        session.update("UserMapper.updateUser", user);
        //提交事务
        //在MyBatis中,进行CRUD操作的时候,只有查找是不需要自己进行手动提交的,其他三种操作都需要进行手动提交。
        session.commit();
    }

进行测试。

测试结果

5 根据id删除用户

UserMapper.xml中添加代码如下:

<!-- 根据id删除用户 -->
    <delete id="deleteUserById" parameterType="Integer">
        delete from user Where u_id = #{id}
    </delete>

测试类HelloMyBatis.java中添加代码如下:

@Test
    //删除用户
    public void Test5() throws IOException {
        String resource = "sqlMapConfig.xml";
        //读取配置文件
        InputStream in = Resources.getResourceAsStream(resource );
        
        //需要sqlSessionFactoryBulider
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        
        //创建sqlSessionfactory
        SqlSessionFactory ssf = ssfb.build(in);
         
        //生产一个sqlSession
        SqlSession session = ssf.openSession();
        
        //操作数据库
        session.delete("UserMapper.deleteUserById", 3);
        //提交事务
        //在MyBatis中,进行CRUD操作的时候,只有查找是不需要自己进行手动提交的,其他三种操作都需要进行手动提交。
        session.commit();
    }

进行测试。

测试结果

相关文章

  • 使用MyBatis对表进行基础的增、删、改、查操作

    【目录】1 通过ID去查询一个用户2 通过用户名模糊查找匹配的用户列表3 完成添加用户4 修改用户5 根据id删除...

  • 1、【MySQL】 库表的增删改查

    一、库操作 1、增 2、查 3、改 4、删 二、表操作 1、增 2、查 3、改 4、删 三、数据 1、增 2、查 ...

  • 0815 A

    mongod 操作 (续) 增 删 查 改

  • MongoDB与Python交互

    连接 文档操作 增 删 改 查

  • python基础-03

    python操作mysql数据库 创建数据表 数据表的 增 删 查 改 增 查 改 删

  • mysql_基础操作

    基本操作 约束 增 删 改 插 查

  • vim 增删改查

    文本操作无非就是增、删、改、查。那vim怎么快速有效增、删、改、查呢? 增 这里 增指的是从vim命令模式切换到输...

  • PDO操作

    基本操作 预处理(增、删、改)操作 预处理(查)操作

  • Jdbc学习之使用DbUtils框架

    1. 作用 使用 Java 对数据库进行增、删、改、查操作 2. 环境 commons-dbutils.jar c...

  • 常用mysql语句

    mysql语句的操作常用的无外乎增、删、改、查,接下来分别用库和表做对象进行增、删、改、查实例分享。做个备忘 1、...

网友评论

      本文标题:使用MyBatis对表进行基础的增、删、改、查操作

      本文链接:https://www.haomeiwen.com/subject/vhiyeqtx.html