mybatis 注解+配置文件方式完整例子



MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在本示例中,我们将探讨如何结合注解和配置文件使用MyBatis,包括数据库的SQL文件、方法的注解等关键部分。 我们需要在项目中引入MyBatis的依赖库。通常,这可以通过在`pom.xml`或`build.gradle`文件中添加对应的Maven或Gradle依赖来实现。例如,对于Maven,我们可以添加如下依赖: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version> </dependency> ``` 接着,创建MyBatis的主配置文件`mybatis-config.xml`,其中定义了数据源、事务管理器等核心配置: ```xml <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 在`test.sql`文件中,包含了与数据库交互的SQL语句。例如,创建用户表的SQL可能是: ```sql CREATE TABLE `user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`) ); ``` MyBatis允许我们使用注解在Java类和接口中定义SQL语句。例如,创建一个名为`UserMapper`的接口,并使用注解`@Select`、`@Insert`等: ```java public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(int id); @Insert("INSERT INTO user(username, password) VALUES(#{username}, #{password})") @Options(useGeneratedKeys = true, keyProperty = "id") int insertUser(User user); } ``` 同时,MyBatis还支持使用XML映射文件来定义SQL语句。在`UserMapper.xml`文件中,我们可以这样写: ```xml <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" resultType="com.example.model.User"> SELECT * FROM user WHERE id = #{id} </select> <insert id="insertUser" parameterType="com.example.model.User"> INSERT INTO user(username, password) VALUES (#{username}, #{password}) </insert> </mapper> ``` 在服务类中,我们需要创建SqlSessionFactory并注入UserMapper,然后就可以调用接口中的方法执行SQL操作: ```java @Configuration public class MyBatisConfig { @Bean public SqlSessionFactory sqlSessionFactory(@Value("${jdbc.url}") String url, @Value("${jdbc.username}") String username, @Value("${jdbc.password}") String password) throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource(url, username, password)); return factoryBean.getObject(); } private DataSource dataSource(String url, String username, String password) { // 创建数据源... } } @Service public class UserService { private final UserMapper userMapper; @Autowired public UserService(UserMapper userMapper) { this.userMapper = userMapper; } public User getUser(int id) { return userMapper.getUserById(id); } public int addUser(User user) { return userMapper.insertUser(user); } } ``` 通过以上步骤,我们就成功地将MyBatis的注解和配置文件结合使用,实现了对数据库的CRUD操作。这种灵活的方式使得开发者可以根据项目需求自由选择使用注解还是XML来定义SQL,提高了代码的可读性和维护性。




































































- 1

- 粉丝: 29
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【Android应用源码】音乐播放器videoplayer.zip
- 【Android应用源码】音乐播放器-.zip
- 【Android应用源码】音乐播放器源码.zip
- MAE154A_UAVDesign-master.zip
- Trabalho_SCM_Drone_UAV-main.zip
- UAV-control-and-path-planning-main.zip
- 基于动量的估计器无人机.zip
- 带有 matlab 的小型卸载飞机书示例模型.zip
- 多架无人机(在 MATLAB 中模拟)的容错和无碰撞区域覆盖系统。.zip
- 基于多任务的多目标海鞘群算法(MTMMA)用于无人机视觉覆盖.zip
- 具有基线结果的无人机路径规划多目标基准的源代码.zip
- 激光雷达和光谱传感器在桉树属遗传改良实验自动评估中的潜在应用的调查”。.zip
- N通道MOS管Si2301产品介绍
- devops实战模型.zip
- 【Android应用源码】音量seekbar制作.zip
- 【Android应用源码】银联支付Demo.zip



- 1
- 2
前往页