Mybatis——CRUD

Mybatis——CRUD

查询

  1. 创建项目并导入坐标
  2. 创建实体类User
  3. 创建SqlMapConfig.xml主配置文件
<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 name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--指定映射配置文件的位置-->
    <mappers>
        <mapper resource="com/wyj/dao/IUserDao.xml"></mapper>
    </mappers>
</configuration>
  1. 创建接口及映射文件
<mapper namespace="com.wyj.dao.IUserDao">
    <!--查询所有-->
    <select id="findAll" resultType="com.wyj.domain.User">
        select * from user
    </select>
</mapper>

resultType:用于指定结果的类型

  1. 编写测试类查询所有

保存

  1. 在接口中新增一个保存用户的方法,对应的映射文件编写
	<!--保存用户-->
    <insert id="saveUser" parameterType="com.wyj.domain.User">
        insert into user(username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday});
    </insert>

parameterType:代表参数的类型,传入的是一个类的对象,类型就写类的全名称
sql语句中使用#{}字符:代表占位符,相当于原来jdbc中的?,具体的内容是由#{}中的内容决定。
#{}中的内容:由于保存方法的参数使一个User对象,因此此处要写User对象中的属性名称。使用ognl表达式。
ognl表达式:它是 apache 提供的一种表达式语言,全称是: Object Graphic Navigation Language 对象图导航语言,它是按照一定的语法格式来获取数据的。 语法格式就是使用 #{对象.对象}的方式。
#{user.username}它会先去找 user 对象,然后在 user 对象中找到 username 属性,并调用getUsername()方法把值取出来。但是我们在parameterType 属性上指定了实体类名称,所以可以省略 user.而直接写 username。

  1. 测试类中的方法,提取公共部分
public class MybatisTest {
    private InputStream in;
    private SqlSession sqlSession;
    private IUserDao userDao;
    @Before //用于在测试方法执行之前执行
    public void init() throws Exception {
        //1.读取配置文件,生成字节输入流
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3.获取SqlSession对象
        sqlSession = factory.openSession();
        //4.获取dao的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
    }
    @After //用于在测试方法之后执行
    public void destroy() throws Exception {
        //提交事务
        sqlSession.commit();
        //6.释放资源
        sqlSession.close();
        in.close();
    }
    /**
     * 测试保存操作
     */
    @Test
    public void testSave(){
        User user = new User();
        user.setUsername("mybatis saveuser");
        user.setAddress("北京市顺义区");
        user.setSex("男");
        user.setBirthday(new Date());
        userDao.saveUser(user);
    }
  1. 新增用户id的返回值
    新增用户后,同时还要返回当前新增用户的 id 值,因为 id 是由数据库的自动增长来实现的,所以就相当于我们要在新增后将自动增长 auto_increment 的值返回。
	<!--保存用户-->
    <insert id="saveUser" parameterType="com.wyj.domain.User">
        <!--配置插入操作后获取插入数据的id -->
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            select last_insert_id();
        </selectKey>
        insert into user(username,address,sex,birthday)values (#{username},#{address},#{sex},#{birthday});
    </insert>

修改

	<!--更新用户-->
    <update id="updateUser" parameterType="com.wyj.domain.User">
        update user set username = #{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id};
    </update>

删除

	<delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id=#{userID};
    </delete>

注意:parameterType的参数是一个简单类型(基本类型8种+String)的时候,#{}中的值可以任意写,如果是一个对象(例如User),则必须使用属性名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值