zoukankan      html  css  js  c++  java
  • Mybatis入门之增删改查

    Mybatis入门之增删改查

    Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了。(增删改都要添加)-----

    浪费了我40多分钟怀疑人生后来去百度。。。

    导入包:

     

    引入配置文件:

    sqlMapConfig.xml(mybatis的核心配置文件)、log4j.properties(日志记录文件)

    <?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>
        <!-- 和Spring整合后 environments配置将废除 -->
        <environments default="development">
            <environment id="development">
                <!-- 使用jdbc事务管理 -->
                <transactionManager type="JDBC"></transactionManager>
                <!-- 数据库连接池 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        
        <!-- 加载映射文件 -->
        <mappers>
            <mapper resource="deep/sqlmap/Account.xml"/>
        </mappers>
    </configuration>
    #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

    数据库准备:(略)

    实体类编写后针对实体类编写的映射文件

    <?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">
    
    <!-- namespace:命名空间,用于隔离sql -->
    <mapper namespace="account">
        <!-- 通过ID查询一个用户 -->
        <!-- parameterType入参的类型,resultType返回值的类型 -->
        <!-- #{v} 参数占位符 -->
        <select id="findUserById" parameterType="Integer" resultType="deep.pojo.Account">
            select * from account where id = #{v}
        </select>
        
        <!-- 
            #{}            占位符  
            ${}            字符串拼接
         -->
        <!-- 根据用户名模糊查询用户列表 -->
        <select id="findUserByUsername" parameterType="String" resultType="deep.pojo.Account">
            <!-- 这种方式不防止sql注入 -->
            <!-- select * from account where username like '%${value}%' -->
            select * from account where username like "%"#{v}"%"
        </select>
        
        <!-- 添加用户 -->
        <insert id="insertUser" parameterType="deep.pojo.Account">
            <!-- 在查询结束后查询最新插入的id,并返回给对象,赋值给对象的id属性 -->
            <selectKey keyProperty="id" resultType="Integer" order="AFTER">
                select LAST_INSERT_ID() 
            </selectKey>
            insert into account (username,birthday,address,sex)
            value (#{username},#{birthday},#{address},#{sex})
        </insert>
        
        <!-- 更新 -->
        <update id="updateUserById" parameterType="deep.pojo.Account">
            update account
            set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address}
            where id = #{id}
        </update>
        
        <!-- 删除 -->
        <delete id="deleteUserById" parameterType="Integer">
            delete from account
            where id = #{v}
        </delete>
        
    </mapper>    

    执行

    package deep.junit;
    
    
    import java.io.InputStream;
    import java.util.Date;
    import java.util.List;
    
    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 deep.pojo.Account;
    
    public class MyBatisFirstTest {
        
        @Test
        public void testMybatis() throws Exception {
            //加载核心配置文件
            String resource = "sqlMapConfig.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            //创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
            //创建SqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession();
            
            //执行sql语句
            Account account = sqlSession.selectOne("account.findUserById", 1);
            
            System.out.println(account);
        }
        
        //根据用户名称模糊查询用户列表
        @Test
        public void testFindUserByUsername() throws Exception{
            String resource = "sqlMapConfig.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            
            //创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
            
            //创建SqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession();
            
            //执行sql语句
            List<Account> accounts = sqlSession.selectList("account.findUserByUsername", "五");
            for (Account account : accounts) {
                System.out.println(account);
            }
        }
        
        //根据用户名称模糊查询用户列表
            @Test
            public void testInsertUser() throws Exception{
                String resource = "sqlMapConfig.xml";
                InputStream in = Resources.getResourceAsStream(resource);
                
                //创建SqlSessionFactory
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
                
                //创建SqlSession
                SqlSession sqlSession = sqlSessionFactory.openSession();
                
                //执行sql语句
                Account account = new Account();
                account.setUsername("麻子2");
                account.setBirthday(new Date());
                account.setAddress("sdfasdfads");
                account.setSex("男");
                int i = sqlSession.insert("account.insertUser", account);
                
                //自己手动提交事务
                sqlSession.commit();
                
                System.out.println(account.getId());
            }
        
        
        //更新用户
            @Test
            public void testUpdateUserById() throws Exception{
                String resource = "sqlMapConfig.xml";
                InputStream in = Resources.getResourceAsStream(resource);
                
                //创建SqlSessionFactory
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
                
                //创建SqlSession
                SqlSession sqlSession = sqlSessionFactory.openSession();
                
                //执行sql语句
                Account account = new Account();
                account.setId(28);
                account.setUsername("麻子更新");
                account.setBirthday(new Date());
                account.setAddress("地址更新");
                account.setSex("女");
                int update = sqlSession.update("account.updateUserById", account);
                
                //自己手动提交事务
                sqlSession.commit();
            }
        
            //更新用户
                    @Test
                    public void testDelete() throws Exception{
                        String resource = "sqlMapConfig.xml";
                        InputStream in = Resources.getResourceAsStream(resource);
                        
                        //创建SqlSessionFactory
                        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
                        
                        //创建SqlSession
                        SqlSession sqlSession = sqlSessionFactory.openSession();
                        
                        sqlSession.delete("account.deleteUserById", 28);
                        
                        //自己手动提交事务
                        sqlSession.commit();
                    }
        
    }
  • 相关阅读:
    [leetcode]Merge Intervals
    ffmpeg错误隐藏框架分析
    [置顶] Hash查找,散列查找
    VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage
    HDU1257:最少拦截系统(LIS)
    ubuntu系统使用dnw下载程序
    ubuntu系统使用minicom终端操作说明
    uboot显示logo的方式
    在XC2440的uboot中挂载U盘,利用FAT文件系统读写U盘文件
    不知道黑片,千万别说你懂“U盘”-解读Nand Flash
  • 原文地址:https://www.cnblogs.com/deepSleeping/p/10444075.html
Copyright © 2011-2022 走看看