MyBatis实例

上篇博客中我讲解了如何配置MyBatis的开发环境,这里我就直接拿一个例子来说明如何在实际的开发中使用MyBatis。

项目目录结构

在MyEclipse中新建一个Java web项目,并导入MyBatis的jar包,同时在src目录下新建一些包,以区分不同的功能,目录结构如下图所示。


我们来一一讲解一下这些文件的具体内容以及功能。

(1)log4j.properties

该文件的内容如下所示:

log4j.rootLogger = DEBUG, stdout
log4j.logger.org.mybatis = DEBUG
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =%5p %d %C\: %m%n
这个主要是为了记录程序运行过程中的配置信息,使用的日志框架是log4j,所以你要在工程中导入log4j的jar包。这个配置的效果要等到整个项目运行起来的时候才能观察到。如下所示:

我们可以看到,它记录了一些非常重要的执行过程,比如SQL语句和一些中间结果。

(2)jdbc.properties

该文件主要是一些数据源的配置信息,它可以在mybatis-config.xml中进行加载,从而引用其中的一些变量,比如数据库驱动、URL、数据库用户名、密码等。

driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis_test?characterEncoding=UTF-8
username = root
password =

(3)com.cao.util

这个包下就定义了一个类:SqlSessionFactoryUtil,它的作用主要是以单例模式创建SqlSessionFactory,同时返回SqlSession,代码如下:

package com.cao.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SqlSessionFactoryUtil {
	
	private static SqlSessionFactory sqlSessionFactory = null;
	private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
	
	/*
	 * 私有化构造函数
	 */
	private SqlSessionFactoryUtil()
	{
		
	}
	/*
	 * 构建SqlSessionFactory
	 */
	public static SqlSessionFactory initSqlSessionFactory()
	{
		String resource = "mybatis-config.xml";
		InputStream is = null;
		try{
			is = Resources.getResourceAsStream(resource);
		}catch(IOException e)
		{
			e.printStackTrace();
		}
		synchronized(CLASS_LOCK)
		{
			if(sqlSessionFactory == null)
				
			{
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
			}
		}
		return sqlSessionFactory;
	}
	public static SqlSession openSqlSession()
	{
		if(sqlSessionFactory == null)
		{
			initSqlSessionFactory();
		}
		return sqlSessionFactory.openSession();
	}
}

(4)com.cao.pojo

这个包下也就只有一个类:Role,其实它就是一个Java bean。

package com.cao.pojo;

public class Role {
	private Long id;
	private String roleName;
	private String note;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
	public String getNote() {
		return note;
	}
	public void setNote(String note) {
		this.note = note;
	}
}

(5)com.cao.mapper

这个包下面有两个文件,充当了映射器的作用,当然也可以不要RoleMapper接口,好像说MyBatis在版本几之前来着都是没有这个接口映射文件的。

<?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">
  
<mapper namespace="com.cao.mapper.RoleMapper">
	<select id="getRole" parameterType="long" resultType="Role">
		select id, role_name as roleName, note from role where id = #{id}
	</select>
	<insert id="insertRole" parameterType="Role">
		insert into role(role_name,note) values(#{roleName},#{note})
	</insert>
	<delete id="deleteRole" parameterType="long">
		delete from role where id = #{id}
	</delete>
</mapper>

package com.cao.mapper;

import com.cao.pojo.Role;

public interface RoleMapper {
	
	public Role getRole(Long id);
	public int insertRole(Role role);
	public int deleteRole(Long id);

}

(6)com.cao.main

当然,这里面就是测试的主函数入口了。

package com.cao.main;

import org.apache.ibatis.session.SqlSession;

import com.cao.mapper.RoleMapper;
import com.cao.pojo.Role;
import com.cao.util.SqlSessionFactoryUtil;

public class RoleMain {

	public static void main(String[] args) {
		
		SqlSession sqlSession = null;
		try{
			sqlSession = SqlSessionFactoryUtil.openSqlSession();
			RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
			Role role = new Role();
			role.setRoleName("zhangxiang");
			role.setNote("this is zhangxiang");
			roleMapper.insertRole(role);
			roleMapper.deleteRole(2L);
			sqlSession.commit();
		}catch(Exception e)
		{
			System.out.println(e.getMessage());
			sqlSession.rollback();
		}finally{
			if(sqlSession != null)
			{
				sqlSession.close();
			}
		}

	}

}

完整代码请在这里下载http://download.csdn.net/detail/chyang1999/9880976

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!这里是一个Spring Boot集成MyBatis的简单项目实例。首先,你需要在你的pom.xml文件添加以下依赖: ```xml <dependencies> <!-- Spring Boot --> <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.23</version> </dependency> </dependencies> ``` 接下来,创建一个数据库表和对应的实体类。假设我们要创建一个用户表,表名为`user`,包含`id`和`name`两个字段。创建一个名为`User`的Java类,包含与数据库表字段对应的属性和相应的getter/setter方法。 ```java public class User { private Long id; private String name; // 省略getter/setter方法 } ``` 然后,在`src/main/resources`目录下创建一个名为`application.properties`的文件,并配置数据库相关信息。 ```properties # 数据库连接配置 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your_password # MyBatis配置 mybatis.mapper-locations=classpath:mappers/*.xml mybatis.type-aliases-package=com.example.demo.model ``` 接着,在`src/main/java/com/example/demo`目录下创建一个名为`UserMapper`的接口,定义与数据库操作相关的方法。 ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user") List<User> getAllUsers(); @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(Long id); @Insert("INSERT INTO user(name) VALUES (#{name})") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUser(User user); @Update("UPDATE user SET name = #{name} WHERE id = #{id}") void updateUser(User user); @Delete("DELETE FROM user WHERE id = #{id}") void deleteUser(Long id); } ``` 最后,在`src/main/java/com/example/demo`目录下创建一个名为`DemoApplication`的类,并添加`@SpringBootApplication`注解。 ```java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 这就是一个简单的Spring Boot集成MyBatis项目实例。你可以根据需要进行扩展和修改。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值