一、概述
在早期的MyBatis中都是使用xml进行配置的,直到注解的出现,注解可以替代一些xml中的配置。
也就是注解中不需要xml配置
CRUD的注解
- @insert()
- @delete()
- @update()
- @select()
二、使用注解进行开发练习
在前面的博客中,我们每次出了查询,增删改都需要提交事务,因此MyBatis开发人员也设计了一个构造器,它可以实现事务自动提交。
openSession(true); //openSession构造器如果参数为true,则事务会自动提交。我们就不用每次都commit;
三、在进行注解开发之前,先对我们的项目进行优化。
1.事务优化:自动提交事务
//获得一个带事务自动提交功能的SqlSession公共的方法
public static SqlSession getSqlSession(){
//自动提交事务
return sqlSessionFactory.openSession(true);
}
2.pojo包下类自动设置别名
<!--配置别名-->
<typeAliases>
<!--<typeAlias type="com.kuang.pojo.User" alias="User"/>-->
<package name="org.westos.pojo"/>
</typeAliases>
3.mapper映射文件路径进行修改
这里需要注意的是mapper里面是class,另外里面的路径之间是点。resource中是反斜杠
<mappers>
<!--class对应的是一个接口类-->
<!--resource对应的是一个接口类的映射文件-->
<mapper class="com.kuang.dao.UserDao"/>
</mappers>
mybatiis核心配置文件
<?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 resource="database.properties"/>
<settings>
<!--默认日志-->
<!--<setting name="logImpl" value="STDOUT_LOGGING"/>-->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--配置别名-->
<typeAliases>
<package name="org.westos.pojo.User"/>
</typeAliases>
<!--配置环境,这里可以有多套环境 default 代表默认的是哪一套-->
<environments default="first">
<!--配置一套环境的名字 ID 就是环境的名字-->
<environment id="first">
<!--transactionManager 事物管理 type:jdbc-->
<transactionManager type="JDBC"></transactionManager>
<!--数据源-->
<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>
<!--class对应的是一个接口类-->
<!--resource对应的是一个接口类的映射文件-->
<mapper class="org.westos.dao.UserMapper"/>
</mappers>
</configuration>
UserMapper.java
package org.westos.dao;
import org.apache.ibatis.annotations.*;
import org.westos.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查询所有用户
@Select("select * from user")
List<User>getUser();
//通过ID查询用户
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id);
//添加用户
@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{pwd})")
Integer addUser(User user);
//修改用户信息
@Update("update user set pwd = #{pwd} ,name=#{name} where id=#{id}")
int updateUser(User user);
//通过ID删除用户
@Delete("delete from user where id = #{uid}")
int deleteUserById(@Param("uid") int id);
}
测试类
package org;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.westos.dao.UserMapper;
import org.westos.pojo.User;
import org.westos.utils.MyBatisUtils;
import java.util.HashMap;
import java.util.List;
public class Test1 {
@Test
public void getUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> user = mapper.getUser();
for (User user1 : user) {
System.out.println(user1);
}
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
sqlSession.close();
System.out.println(user);
}
@Test
public void addUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(7, "刘志豪", "123212");
Integer integer = mapper.addUser(user);
sqlSession.close();
}
@Test
public void updateUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(7, "路宽", "000000");
int i = mapper.updateUser(user);
sqlSession.close();
}
@Test
public void deleteUserById(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.deleteUserById(7);
sqlSession.close();
}
}
注意事项
- 我们这里编写的工具类实现了事务自动提交,但是在我们平时自己编写时要记得提交事务。
- @Param参数尽量写上,如果有多个参数,那么就必须每个都写上。
本文介绍如何在MyBatis中使用注解替代XML配置,包括CRUD操作的注解,并演示了如何利用openSession(true)实现事务自动提交,简化开发流程。
973

被折叠的 条评论
为什么被折叠?



