mysql xml 注释_Mybatis之XML、注解

前言

上篇简单介绍了Mybatis的简单实用,本篇先对上次实验环境的一些内容进行优化,然后验证Mybatis的XML配置以及注解方式。

实验环境优化

数据库配置

在mybatis的配置文件中,引入数据库配置文件db.properties,然后修改配置文件

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mybatis

name=root

password=admin

mybatis配置文件mybatis-config.xml

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

实体类定义别名

没有为实体定义别名时,在sql映射xml中应用实体时,比如parameterType resultType 中就需要配置实体的全路径名(全限定名)。

当为实体定义了别名后,映射文件中可以直接配置实体的别名即可。因此为实体类定义别名,可以简化Sql映射xml文件中对实体的引用配置。

mybatis配置文件中定义实体别名有两种方式:

typeAlias 单个为每个实体定义别名 当实体类比较多是 配置增多 不方便

package 指定实体的包  会自动为改包下的所有实体自动设定各自的类名为别名

优化后的Mybatis配置文件mybatis-config.xml

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

Mybatis实现方式

分别使用XML和注解的方式实现对User的CURD。XML方式

sql中参数定义为 #{} 在Mybatis配置文件中已经配置对实体类的自动设置别名,因此此处可以直接使用实体类的别名进行引用。

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from users where id = #{id}

delete from users where id = #{id}

update users set name = #{name},age = #{age} where id = #{id}

insert into users(name,age) values(#{name},#{age})

select * from users

1 packagecom.lion.test;2

3 importjava.io.IOException;4 importjava.util.List;5

6 importorg.apache.ibatis.session.SqlSession;7 importorg.apache.ibatis.session.SqlSessionFactory;8 importorg.junit.Test;9

10 importcom.lion.pojo.User;11 importcom.lion.util.MybatisUtils;12

13 public classTestUserCURDByXML {14

15 @Test16 public voidtestAdd() {17 try{18 SqlSessionFactory factory =MybatisUtils.getFactory();19 SqlSession session =factory.openSession();20

21 String statement = "com.lion.mapper.UserMapper.addUser";22 //id mysql设置的自增长 此处设为 -1

23 User user = new User(-1, "Spring", 25);24 session.insert(statement, user);25

26 //不提交的话 数据无法提交到数据库

27 session.commit();28 session.close();29 } catch(IOException e) {30 e.printStackTrace();31 }32 }33

34 @Test35 public voidtestDelete() {36 try{37 SqlSessionFactory factory =MybatisUtils.getFactory();38 //自动提交事务

39 SqlSession session = factory.openSession(true);40

41 String statement = "com.lion.mapper.UserMapper.deleteUser";42 session.delete(statement, 4);43

44 session.close();45 } catch(IOException e) {46 e.printStackTrace();47 }48 }49

50 @Test51 public voidtestUpdate() {52 try{53 SqlSessionFactory factory =MybatisUtils.getFactory();54 //自动提交事务

55 SqlSession session = factory.openSession(true);56

57 String statement = "com.lion.mapper.UserMapper.updateUser";58 User user = new User(1, "mali", 18);59 session.update(statement, user);60

61 session.close();62 } catch(IOException e) {63 e.printStackTrace();64 }65 }66

67 @Test68 public voidtestSelect() {69 try{70 SqlSessionFactory factory =MybatisUtils.getFactory();71 //自动提交事务

72 SqlSession session = factory.openSession(true);73

74 String statement = "com.lion.mapper.UserMapper.selectAll";75 List users =session.selectList(statement);76 for(User user : users) {77 System.out.println(user);78 }79

80 session.close();81 } catch(IOException e) {82 e.printStackTrace();83 }84 }85

86 }

注解方式

packagecom.lion.testAnnotation;importjava.util.List;importorg.apache.ibatis.annotations.Delete;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations.Select;importorg.apache.ibatis.annotations.Update;importcom.lion.pojo.User;public interfaceUserMapper {

@Insert("insert into users(name,age) values(#{name},#{age})")intinsertUser(User user);

@Delete("delete from users where id = #{id}")int deleteUser(intid);

@Update("update users set name = #{name},age = #{age} where id = #{id}")intupdateUser(User user);

@Select("select * from users where id = #{id}")

User selectUser(intid);

@Select("select * from users")

ListselectAll();

}

Mybatis配置文件中注册映射接口  class

针对同一实体的映射文件不能放到同一个包中。

1 packagecom.lion.testAnnotation;2

3 importjava.io.IOException;4 importjava.util.List;5

6 importorg.apache.ibatis.session.SqlSession;7 importorg.apache.ibatis.session.SqlSessionFactory;8 importorg.junit.Before;9 importorg.junit.Test;10

11 importcom.lion.pojo.User;12 importcom.lion.util.MybatisUtils;13

14 public classTestUserCURDByAnnotaion2 {15

16 privateSqlSessionFactory factory;17

18 @Before19 public voidloadFactory() {20 try{21 factory =MybatisUtils.getFactory();22 } catch(IOException e) {23 e.printStackTrace();24 }25 }26

27 @Test28 public voidtestAdd() {29 SqlSession session = factory.openSession(true);30 //映射器

31 UserMapper mapper = session.getMapper(UserMapper.class);32

33 int i = mapper.insertUser(new User(-1, "xiazis", 24));34

35 System.out.println(i);36

37 session.close();38

39 }40

41 @Test42 public voidtestDelete() {43 SqlSession session = factory.openSession(true);44 //映射器

45 UserMapper mapper = session.getMapper(UserMapper.class);46

47 int i = mapper.deleteUser(1);48

49 System.out.println(i);50

51 session.close();52

53 }54

55 @Test56 public voidtestUpdate() {57 SqlSession session = factory.openSession(true);58 //映射器

59 UserMapper mapper = session.getMapper(UserMapper.class);60

61 int i = mapper.updateUser(newUser());62

63 System.out.println(i);64

65 session.close();66

67 }68

69 @Test70 public voidtestSelect() {71 SqlSession session = factory.openSession(true);72 //映射器

73 UserMapper mapper = session.getMapper(UserMapper.class);74

75 User user = mapper.selectUser(2);76

77 System.out.println(user);78

79 session.close();80

81 }82

83 @Test84 public voidtestSelectAll() {85 SqlSession session = factory.openSession(true);86 //映射器

87 UserMapper mapper = session.getMapper(UserMapper.class);88

89 List users =mapper.selectAll();90

91 for(User user : users) {92 System.out.println(user);93 }94

95 session.close();96

97 }98

99 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题我可以回答。以下是一个简单的 Spring Boot 项目,使用 MyBatis 通过 XML 配置对 MySQL 数据库进行 CRUD 操作的代码和注释: 首先,需要在 pom.xml 中添加以下依赖: ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies> ``` 接下来,需要在 application.properties 中配置数据库连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 其中,url 中的 test 是数据库名,username 和 password 是数据库的用户名和密码,driver-class-name 是 MySQL 驱动的类名。 然后,需要创建一个 User 实体类,用于映射数据库中的 user 表: ```java public class User { private Long id; private String name; private Integer age; // getter 和 setter 略 } ``` 接着,需要创建一个 UserMapper 接口,用于定义 CRUD 操作: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") void insert(User user); @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}") void update(User user); @Delete("DELETE FROM user WHERE id = #{id}") void delete(Long id); } ``` 其中,@Mapper 注解表示这是一个 MyBatis 的 Mapper 接口,@Select、@Insert、@Update、@Delete 注解分别表示查询、插入、更新、删除操作。 最后,需要创建一个 UserController 类,用于处理 HTTP 请求: ```java @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { return userMapper.findById(id); } @PostMapping("/users") public void addUser(@RequestBody User user) { userMapper.insert(user); } @PutMapping("/users/{id}") public void updateUser(@PathVariable Long id, @RequestBody User user) { user.setId(id); userMapper.update(user); } @DeleteMapping("/users/{id}") public void deleteUser(@PathVariable Long id) { userMapper.delete(id); } } ``` 其中,@RestController 注解表示这是一个 RESTful API,@Autowired 注解表示自动注入 UserMapper 对象,@GetMapping、@PostMapping、@PutMapping、@DeleteMapping 注解分别表示 GET、POST、PUT、DELETE 请求。 好了,以上就是一个简单的 Spring Boot 项目,使用 MyBatis 通过 XML 配置对 MySQL 数据库进行 CRUD 操作的代码和注释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值