mybatis实现增删改查
1.配置mybatis-config.xml文件
<?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>
<settings>
<!--开启自动驼峰命名映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--default是和environment的id进行匹配的-->
<environments default="development">
<environment id="development">
<!--使用原始的jdbc进行事务控制,需要手动的完成事务的提交和回滚-->
<transactionManager type="JDBC"/>
<!--数据库连接池参数配置-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/guoxinqiao?serverTimezone=UTC&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--映射文件配置-->
<mappers>
<mapper resource="mapper/UserMapper1.xml"/>
</mappers>
</configuration>
2.sql语句和接口实现跳转
(1)UserMapper.xml 编写增删改查的sql语句
标签的namespace要绑定接口的全限定类名才行
cn.kgc.mybatis.mapper.UserMapper
<?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">
<!--
将对于教室表格操作的SQL语句书写在该文件中
namespace: 命名空间
作用:文件在项目中的唯一标识符 用于SQL语句的查找
接口和mapper文件的映射 namespace
-->
<mapper namespace="cn.kgc.mybatis.mapper.UserMapper">
<!--查询: select
id: sql语句的唯一标识 -> 对应接口中的方法名
resultType: 返回结果的类型 数据类型的全限定名 包名 + 类名 反射
-->
<select id="selectAll" resultType="cn.kgc.mybatis.entity.User">
select * from user
</select>
<insert id="addOne" parameterType="cn.kgc.mybatis.entity.User">
insert into user (id,NAME,age) values (#{id},#{name},#{age})
</insert>
<!--根据id查询 #{ } 获取参数 参数的占位 ? 避免sql的注入-->
<select id="selectOne" resultType="cn.kgc.mybatis.entity.User" parameterType="integer">
select * from user where id = #{id}
</select>
<delete id="deleteOne" parameterType="integer">
delete from user where id = #{id}
</delete>
<update id="updateOne" parameterType="cn.kgc.mybatis.entity.User">
update user set NAME = #{name} where id = #{id}
</update>
</mapper>
(2).UserMapper接口
package cn.kgc.mybatis.mapper;
import cn.kgc.mybatis.entity.User;
import java.util.List;
/**
*
* Created by 小保底不歪
* 2022/6/16 17:20
*/
public interface UserMapper {
// 查询所有
List<User> selectAll();
// 根据id查询一个
User selectOne(Integer id);
// 修改教师信息
Integer updateOne(User user);
// 添加教师信息
Integer addOne(User user);
// 根据id删除教师信息
Integer deleteOne(Integer id);
}
3、实体类
User
package cn.kgc.mybatis.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class User {
private Integer id;
private String name;
private Integer age;
}
4、测试类代码
package cn.kgc.test;
import cn.kgc.mybatis.entity.User;
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.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
*
* Created by 小保底不歪
* 2022/6/16 14:51
*/
public class UserTest {
private SqlSessionFactory factory;
@Before
public void init() {
try {
InputStream resourceAsStream = Resources.getResourceAsStream("config/mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// 查询所有用户信息
@Test
public void selectAll() {
// sql会话对象 执行数据的crud操作
SqlSession sqlSession = factory.openSession();
// 查询数据列表
List<User> users = sqlSession.selectList("cn.kgc.mybatis.mapper.UserMapper.selectAll");
// 遍历集合
users.forEach(user -> System.out.println("user = " + user));
}
// 根据id查询一个用户信息
@Test
public void selectOne(){
SqlSession sqlSession = factory.openSession();
// String , Object
User user = sqlSession.selectOne("user.selectOne", 1);
System.out.println("user = " + user);
}
// 添加一个用户信息
@Test
public void addOne(){
SqlSession sqlSession = factory.openSession();
// 创建一个教室对象
User user = new User(8, "赵亮", 22);
int insert = sqlSession.insert("user.addOne", user);
// 增删改 jdbc默认不会提交事务
sqlSession.commit();
System.out.println(insert > 0 ? "true" : "false");
}
// 删除一个用户
@Test
public void deleteOne(){
SqlSession sqlSession = factory.openSession();
int delete = sqlSession.delete("user.deleteOne", 1);
sqlSession.commit();
System.out.println(delete > 0 ? "true" : "false");
}
// 修改一个记录
@Test
public void updateOne(){
SqlSession sqlSession = factory.openSession();
int update = sqlSession.update("user.updateOne", 2);
sqlSession.commit();
System.out.println(update > 0 ? "true" : "false");
}
}
以上是mybatis初学者第一天的内容