• mybatis单表增删查改(Users,id,name,age)


    mybatis单表增删查改(Users,id,name,age)

    1.mybatis的步骤

    1.0.准备数据库和表

    use big12 ; 
    create table users(id int primary key auto_increment , name varchar(20) , age int);
    desc users;  //查看表结构
    

    1.1创建模块,添加Maven

    [pom.xml]

      <groupId>com.dzc</groupId>
        <artifactId>mybatis</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.17</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>
            <!--添加mybatis安装包-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.1</version>
            </dependency>
        </dependencies>>
    

    1.2创建User类

    [User.java]

    /**
     * 域模型
     * **/
    public class User {
        private Integer id;
        private String name;
        private int age;
    
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    

    1.3创建映射文件

    [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="users">
        <!-- 定义insert语句 ,获得生成的id字段-->
        <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        <!--#提取对象,提取参数的对象-->
    ​```MySql  insert into users(name,age) values(#{name},#{age})
        </insert>
        
        <update id="update">
            update users set name = #{name} , age = #{age} where id = #{id}
        </update>
    
        <delete id="delete">
            delete from users where id = #{id}
        </delete>
        
        <select id="selectById" resultMap="rmUser">
    select
            u.id uid , u.name uname ,u.age uage , o.id oid , o.orderno oorderno,o.price oprice,  i.id iid , i.iname iiname
          from
            users u
            left outer join orders o on o.cid = u.id
            left outer join orderitems i on i.oid = o.id
          where u.id = #{id}
        </select>
        <select id="selectAll" resultType="_User">
          select * from users
        </select>
        <!-- 用户映射 -->
        <resultMap id="rmUser" type="_User">
            <id column="uid" property="id" />
            <result column="uname" property="name" />
            <result column="uage" property="age"/>
            <collection property="orders" ofType="_Order" column="uid">
                <id column="oid" property="id" />
                <result column="oorderno" property="orderNo" />
                <result column="oprice" property="price"/>
                <collection property="items" ofType="_Item" column="oid">
                    <id column="iid" property="id"/>
                    <result column="iiname" property="iname" />
                </collection>
            </collection>
        </resultMap>
    </mapper>
    

    1.4创建配置文件

    [resources/mybatis-config.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>
    		<properties>
    			<property name="driver" value="com.mysql.jdbc.Driver"/>
    			<property name="url" value="jdbc:mysql://localhost:3306/big12"/>
    			<property name="username" value="root"/>
    			<property name="password" value="root"/>
    		</properties>
    		<environments default="development">
    			<environment id="development">
    				<transactionManager type="JDBC"/>
    				<dataSource type="POOLED">
    					<property name="driver" value="${driver}"/>
    					<property name="url" value="${url}"/>
    					<property name="username" value="${username}"/>
    					<property name="password" value="${password}"/>
    				</dataSource>
    			</environment>
    		</environments>
    		<mappers>
    			<mapper resource="UserMapper.xml"/>
    		</mappers>
    	</configuration>
    

    1.5测试增删改查

        package com.dzc.mybatis.test;	
        import com.dzc.mybatis.domain.User;
    	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 java.io.IOException;
    	import java.io.InputStream;
    
    	/**
    	 * 测试增删改查
    	 */
    	public class TestCRUD {
          /**添加操作***/
    		@Test
    		public void testInsert() throws IOException {
    			//1.加载配置文件  Resources.getResourceAsStream()(读取内路径的资源流加载)
    			InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
    			//2.创建会话工厂(builder模式)(连接池)
    			SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
    			//3.开启会话,相当于连接
    			SqlSession sess = sf.openSession();
    			//4.创建提交对象
               User u = new User() ;
    			u.setName("tom");
    			u.setAge(12);
              //intsert(String:tatement,(语句)Object parameter(对象))UserMapper.xml
    			sess.insert("users.insert" , u) ;
                //提交(事物操作)
    			sess.commit();
    			sess.close();
    			System.out.println("ok");
    		}
    	}
    

    2.update修改

    2.1在映射文件中添加新update sql

    [resources/UserMapper.xml]

    <update id="update">
        update users set name = #{name} , age = #{age} where id = #{id}//通过id来更新
    </update>
    

    2.2在测试文件中写修改代码

    [TestCRUD.java]

    /**修改操作***/
            public void testUpdate()throws  IOException{
                //1.加载配置文件  Resources.getResourceAsStream()(读取内路径的资源流加载)
                InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
                //2.创建会话工厂(builder模式)(连接池)
                SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
                //3.开启会话,相当于连接
                SqlSession sess = sf.openSession();
                //4.创建提交对象
                User u = new User() ;
                u.setName("toms");
                u.setAge(22);
                //通过id修改
                u.setId(1);
                //update(String:tatement,(语句)Object parameter(对象))UserMapper.xml
                sess.update("users.update" , u) ;
                //提交(事物操作)
                sess.commit();
                sess.close();
                System.out.println("ok");//1.加载配置文件  Resources.getResourceAsStream()(读取内路径的资源流加载)
            }
    

    3.delete删除

    3.1在UserMapper.xml写sql语句

    [resources/UserMapper.xml]

        <delete>
           delete from users where id = #{id}
        </delete>
    
    3.2.在Api中调用方法

    [TestCRUD.java]

    /**
         *根据id删除
         * */
        @Test
        public void delectById()throws IOException{
            //1.加载配置文件  Resources.getResourceAsStream()(读取内路径的资源流加载)
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
            //2.创建会话工厂(builder模式)(连接池)
            SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
            //3.开启会话,相当于连接
            SqlSession sess = sf.openSession();
            sess.delete("users.delect",1);
            sess.close();
        }
    

    4.Select查询按照id查询

    4.1给查询操作定义别名

    [resources/UserMapper.xml]

    [resources/mybatis-config.xml] alias定义别名

    <typeAliases>
    <typeAlias type="com.dzc.mybatis.domain.User" alias="_User"/>
    <typeAliases>
    

    4.2UserMapper.xml中根据id写查询语句

    [resources/UserMapper.xml]

    <select id="selectById" resultType="_User">
      select * from users where id=#{id}
    </select>
    

    4.3在Api中调用方法

    [TestCRUD.java]

    //单个查询
    @Test
    public void testSelectOne()throws IOException{
        //1.加载配置文件  Resources.getResourceAsStream()(读取内路径的资源流加载)
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        //2.创建会话工厂(builder模式)(连接池)
        SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
        //3.开启会话,相当于连接
        SqlSession sess = sf.openSession();
        sess.selectOne("users.selectById" , 1) ;
        //提交(事物操作)
        sess.commit();
        sess.close();
    }
    

    5.查询多个

    5.1给查询操作定义别名

    [resources/mybatis-config.xml] alias定义别名

      <typeAliases>
      <typeAlias type="com.oldboy.mybatis.domain.User" alias="_User"/>
      </typeAliases>
    

    5.2在UserMapper.xml添加sql语句

    [resources/UserMapper.xml]

    <select id="selectById" resultType="_User">
      select * from users 
    </select>
    

    5.3API调用

    [TestCRUD.java]

    //查询多个
    @Test
    public void testSelectAll()throws IOException{
        //1.加载配置文件  Resources.getResourceAsStream()(读取内路径的资源流加载)
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        //2.创建会话工厂(builder模式)(连接池)
        SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
        //3.开启会话,相当于连接
        SqlSession sess = sf.openSession();
        List<User> list= sess.selectList("users.selectAll" ) ;
        //提交(事物操作)
        sess.commit();
        System.out.println(list.size());
        sess.close();
    }
    
  • 相关阅读:
    动画Animation
    ListView配合BaseAdapter
    ListView 搭配SimpleAdapter
    内部类以及内部接口的实例化
    SAP FI模块常用事务代码
    java随机生成字符串和校验
    JAVA版exe可执行加密软件
    微信小程序实现类似JQuery siblings()的方法
    微信小程序实现给循环列表点击添加类(单项和多项)
    微信小程序如何动态增删class类名
  • 原文地址:https://www.cnblogs.com/SteveDZC/p/9715755.html
Copyright © 2020-2023  润新知