Mybatis入门之增删改查

Mybatis入门之增删改查

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

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

导入包:

 Mybatis入门之增删改查

 

引入配置文件:

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