赞
踩
目录
@Insert | 用于映射插入( 添加 )语句,等同于Mapper.xml文件中的<insert>元素 |
@Delete | 用于映射删除语句,等同于Mapper.xml文件中的<delete>元素 |
@Select | 用于映射查询语句,等同于Mapper.xml文件中的<select>元素 |
@Update | 用于映射更新( 修改 )语句,等同于Mapper.xml文件中的<update>元素 |
@Param | 用于指定SQL语句中的参数 |
创建一个为mybatis的数据库,选择该数据库,在该数据库中创建一个users的数据表 ,并向该数据表中添插入三条数据
- -- 选择数据库
- use mybatis
-
- -- 创建数据表
- create table users(
- id int(32) primary key auto_increment,
- name varchar(50),
- age int(10),
- sex varchar(20)
- )
-
- -- 查询数据表
- select * from users
-
- -- 插入数据 向里面插入三条数据
- insert into users(name,age,sex) values("张三",18,"男"),("李四",18,"男"),("翠花",18,"女")
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
创建一个maven项目,在maven下的pom.xml中添加以下核心依赖jar包
- <dependencies>
-
- <!--mybatis相关jar-->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>3.4.6</version>
- </dependency>
-
- <!--mysql数据库相关jar-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.16</version>
- </dependency>
-
- <!--junit测试相关jar-->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
引入依赖之后,在src/main/resources目录下创建Mybatis-config.xml的核心配置以及db.properties的数据库连接源
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>
- <!--properties是一个配置属性的元素 该元素的作用是读取外部文件的配置信息(数据库的连接信息) 引入外部db.properties-->
- <properties resource="db.properties"/>
- <!--实体类起别名-->
- <typeAliases>
- <package name='com.demo.entity'/>
- </typeAliases>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <!--引入properties文件后 获取配置属性的值(连接数据库的信息)-->
- <property name="driver" value="${DriverManager}"/>
- <property name="url" value="${jdbcUrl}"/>
- <property name="username" value="${user}"/>
- <property name="password" value="${password}"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <!--加载映射文件-->
- <mapper class="com.demo.mapper.UsersMapper"/>
- </mappers>
-
- </configuration>
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
db.properties的核心配置
- <!--Mysql的驱动路径(加载Mysql)-->
- DriverManager=com.mysql.cj.jdbc.Driver
- <!--Mysql的数据库路径-->
- jdbcUrl=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
- <!--数据库的登录账号-->
- user=root
- <!--数据库的登录密码-->
- password=root
接下来在maven下的src/main/java下创建com.demo.entity的实体类包,在entity下创建Users实体类,对Users类进行封装。
- package com.demo.entity;
-
- /**
- * @BelongsProject: demo
- * @BelongsPackage: com.demo.entity
- * @Author: 云边小屋(My.Tears)
- * @CreateTime: 2023-03-08 15:34
- * @Description: TODO
- * @Version: 1.0
- */
- public class Users {
- //用户id
- private Integer id;
-
- //用户姓名
- private String name;
-
- //用户年龄
- private Integer age;
-
- //用户性别
- private String sex;
-
- public Users(Integer id, String name, Integer age, String sex) {
- this.id = id;
- this.name = name;
- this.age = age;
- this.sex = sex;
- }
-
- public Users() {
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
-
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
-
- @Override
- public String toString() {
- return "Users{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", age=" + age +
- ", sex='" + sex + '\'' +
- '}';
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
创建好实体类之后,继续在maven下的src/main/java下创建com.demo.utils的工具类包,用于创建连接Mybatis的工具类
- package com.demo.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;
-
- /**
- * @BelongsProject: demo
- * @BelongsPackage: com.demo.utils
- * @Author: 云边小屋(My.Tears)
- * @CreateTime: 2023-03-08 15:44
- * @Description: TODO
- * @Version: 1.0
- */
- public class MybatisUtils {
- private static SqlSessionFactory sqlSessionFactory = null;
-
- //初始化SQLSessionFactory对象
- static {
- InputStream resourceAsStream = null;
- try {
- // 读取加载Mybatis-config.xml的配置文件
- resourceAsStream = Resources.getResourceAsStream("Mybatis-config.xml");
- // 构建SqlSessionFactory对象
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- // 获取SQLSession的静态对象
- public static SqlSession getSqlSession() {
- return sqlSessionFactory.openSession();
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
代码示例:
- package com.demo.mapper;
-
- import com.demo.entity.Users;
- import org.apache.ibatis.annotations.*;
-
- import java.util.List;
-
- public interface UsersMapper {
- /**
- * 插入用户
- *
- * @param users id
- * @return int
- * @Insert注解插入
- */
- @Insert("insert into users(name,age,sex) values(#{name},#{age},#{sex})")
- int InsertUsers(Users users);
-
-
- /**
- * 删除用户
- *
- * @param id id
- * @return int
- * @Delete注解删除
- */
- @Delete("delete from users where id = #{id}")
- int DeleteUsers(int id);
-
-
- /**
- * 更新用户
- *
- * @param users id
- * @return int
- * @Update注解更新
- */
- @Update("update users set name = #{name} , age = #{age} ,sex = #{sex} where id = #{id}")
- int UpdateUsers(Users users);
-
- /**
- * 查询用户
- *
- * @return {@link List}<{@link Users}>
- * @Select注解查询
- */
- @Select("select * from users")
- List<Users> SelectUsers();
-
- /**
- * 更新用户
- *
- * @param id id
- * @param name 名字
- * @param age 年龄
- * @return int
- * @Param注解更新
- */
- @Update("update users set name = #{param1} ,age = #{param2} where id = #{param3}")
- int ParamUsers(@Param("param3") int id, @Param("param1") String name, @Param("param2") int age);
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- package com.demo.mapper;
-
- import com.demo.entity.Users;
- import com.demo.utils.MybatisUtils;
- import org.apache.ibatis.session.SqlSession;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
-
- import java.util.List;
-
- public class UsersMapperTest {
- private SqlSession sqlSession = null;
- private UsersMapper usersMapper = null;
-
- @Before
- public void setUp() throws Exception {
- // 连接数据库
- sqlSession = MybatisUtils.getSqlSession();
- // 获取接口
- usersMapper = sqlSession.getMapper(UsersMapper.class);
- }
-
- @After
- public void tearDown() throws Exception {
- // 提交事务
- sqlSession.commit();
- // 释放资源
- sqlSession.close();
-
- }
-
- /**
- * 插入用户
- */
- @Test
- public void insertUsers() {
- Users users = new Users();
- users.setAge(20);
- users.setName("靓仔2号");
- users.setSex("男");
- int i = usersMapper.InsertUsers(users);
- if (i > 0) {
- System.out.println("添加成功!");
- } else {
- System.out.println("添加失败!");
- }
- }
-
- /**
- * 删除用户
- */
- @Test
- public void deleteUsers() {
- int i = usersMapper.DeleteUsers(7);
- if (i > 0) {
- System.out.println("删除成功!");
- } else {
- System.out.println("删除失败,数据不存在!");
- }
- }
-
- /**
- * 更新用户
- */
- @Test
- public void updateUsers() {
- Users users = new Users();
- users.setSex("女");
- users.setId(8);
- users.setAge(20);
- users.setName("雨欣");
- int i = usersMapper.UpdateUsers(users);
- if (i > 0) {
- System.out.println("更新成功!");
- } else {
- System.out.println("更新失败!");
- }
- }
-
- /**
- * 查询用户
- */
- @Test
- public void selectUsers() {
- List<Users> users = usersMapper.SelectUsers();
- for (Users user : users) {
- System.out.println(user);
- }
-
- }
-
- /**
- * 更新用户
- */
- @Test
- public void paramUsers() {
- int i = usersMapper.ParamUsers(2, "憨憨", 20);
- if (i > 0) {
- System.out.println("更新成功!");
- } else {
- System.out.println("更新失败!");
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
所以可以把一些需要频繁编写的代码根据测试的运行顺序去放置
Mybatis的注解开发只适用于那些较简单的映射语句,在对于较为复杂的映射语句的时候,代码的可读性就不是很好了,会显的代码很乱,所以建议在编写复杂的映射语句的时候,尽量采用Mapper.xml的形式编写。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。