(九)使用注解实现增删改查
前面学过的都是使用xml配置文件的方式实现接口,另外一种实现的方式为使用注解开发,不再需要配置文件,现在将完整的增删改查代码贴在下面与大家分享。
一、环境
数据库(mybatis)
user表:id name pwd
实体类
User{int id;String pwd;String name }
注意:这里的属性名最好要和数据库中的字段名相同,这样系统可以自动完成映射,否则还需要手动设置别名。
MybatisUtil类
编写此类是为了将获得SqlSession的代码进行封装便于复用
package top.zhang.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
//获取factory对象
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
}
编写db.properties
这是数据库的配置文件,MyBatis的配置文件将会在此配置文件中读取数据库连接需要的信息
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT&allowPublicKeyRetrieval=true
username=root
password=root
编写mybatis-config.xml文件
这是MyBatis的核心配置文件,用于配置MyBatis
<?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="db.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 class="top.zhang.dao.UserMapper"></mapper>
</mappers>
</configuration>
创建UserMapper接口
以上,环境准备完成
二、实现
select
-
方法
@Select("select * from user where id = #{id}") User getUserById(@Param("id") int id);
-
测试
@Test public void test(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.getUserById(2); System.out.println(user.toString()); sqlSession.close(); }
-
结果
User{id=2, name='李四', password='null'}
insert
-
方法
@Insert("insert into user values(#{id},#{name},#{pwd})") int insert(User user);
-
测试
@Test public void test(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); int res = mapper.insert(new User(1,"张张","dsds")); if(res>0) System.out.println("succeed!"); sqlSession.close(); }
-
结果
插入成功
delete
-
方法
@Delete("delete from user where id = #{id}") int delete(@Param("id") int id);
-
测试
@Test public void test(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); int res = mapper.delete(1); if(res>0) System.out.println("succeed!"); sqlSession.close(); }
-
运行结果
删除成功
update
-
方法
@Update("update user set name = #{name},pwd = #{pwd} where id = #{id}") int update(User user);
-
测试
@Test public void test(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); int res = mapper.update(new User(2,"2323","2323")); if(res>0) System.out.println("succeed!"); sqlSession.close(); }
-
运行结果
修改成功
以上,使用了注解的方式实现了MyBatis对数据库的增删查改。