mybatis框架util工具类封装并对 mybatis-config.xml文件j进行优化 给实体类起别名 提取数据库连接参数到小配置文件 并开启二级缓存

封装 Mybatis工具类
package com.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 MybatisUtil {
	private  static  SqlSessionFactory sessionFactory;
	private  static  ThreadLocal<SqlSession> tol = new ThreadLocal<SqlSession>(); 
	static {
		 InputStream is =null;
		  try {
			is = Resources.getResourceAsStream("mybatis-config.xml");
			 //2 . 创建SqlSessionFactory 
			sessionFactory = new SqlSessionFactoryBuilder().build(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				is.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}
	//返回值为 SqlSession 的方法  获得sqlSession 对象
	public static SqlSession getSqlSession(){	
	 SqlSession sqlSession = tol.get();
	 if(sqlSession == null){
	 try{
		  //3.  创建SqlSession 
		  sqlSession = sessionFactory.openSession();
		  tol.set(sqlSession);
		  return sqlSession;
		 }catch(Exception e){
		  e.printStackTrace();
		 } 
	 }
		return sqlSession;
	}
	// 关闭资源
	public static void close(){
		SqlSession sqlSession=getSqlSession();
		tol.remove();
		sqlSession.close();
	}    
}

配置 mybatis-config.xml文件 给实体类起别名 提取数据库连接参数到小配置文件 并开启二级缓存
jdbc.properties
driver = oracle.jdbc.OracleDriver
url = jdbc:oracle:thin:@localhost:1521:xe
user = hr
password =hr
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 resource="jdbc.properties"></properties>
	<!-- 开启二级缓存(以及缓存默认打开) 如需要在具体的mapper文件中使用缓存  加一对<cache></cache> 标签即可 -->
    <settings>
      <setting name="cacheEnabled" value="true"/>
   </settings>
	<!-- 给实体类起别名 -->
	<typeAliases>
		<typeAlias type="com.entity.Empl1" alias="Empl1" />
		<typeAlias type="com.entity.Identification" alias="Identification"/>
	</typeAliases>
	<environments default="oracle">
		<environment id="oracle">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${user}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 管理mapper文件 -->
	<mappers>	
		<mapper resource="com/dao/Emp1DaoImpl3.xml"/>
		<mapper resource="com/dao/IdentificationDaoImpl3.xml"/>
		<mapper resource="com/empdaotest/Emp1DaoImplTest.xml" />
	</mappers>
</configuration>

好的,以下是一个简单的抽奖功能的示例程序,使用Spring Boot和MyBatis框架开发: **1. 数据库表设计** 在数据库中创建一个名为`lottery`的表,包含以下字段: ``` id int(11) NOT NULL AUTO_INCREMENT, user_name varchar(50) NOT NULL, prize_name varchar(50) NOT NULL, create_time datetime NOT NULL, PRIMARY KEY (id) ``` **2. Dao层** 创建一个名为`LotteryDao`的接口,定义抽奖功能所需的数据库操作方法。示例代码如下: ```java public interface LotteryDao { void insert(Lottery lottery); int countByUsername(String username); } ``` **3. Mapper.xml文件** 在`src/main/resources`目录下创建一个名为`LotteryMapper.xml`的文件,定义`LotteryDao`接口中所需的SQL语句。示例代码如下: ```xml <mapper namespace="com.example.dao.LotteryDao"> <insert id="insert" parameterType="com.example.entity.Lottery"> insert into lottery(user_name, prize_name, create_time) values(#{userName}, #{prizeName}, now()) </insert> <select id="countByUsername" resultType="int"> select count(*) from lottery where user_name=#{username} </select> </mapper> ``` **4. Entity层** 创建一个名为`Lottery`的实体类,对应数据库表中的字段。示例代码如下: ```java @Data @AllArgsConstructor @NoArgsConstructor public class Lottery { private Integer id; private String userName; private String prizeName; private Date createTime; } ``` **5. Service层** 创建一个名为`LotteryService`的接口,定义抽奖功能所需的业务逻辑方法。示例代码如下: ```java public interface LotteryService { void draw(String username); } ``` **6. Service实现类** 创建一个名为`LotteryServiceImpl`的类,实现`LotteryService`接口中的方法。示例代码如下: ```java @Service public class LotteryServiceImpl implements LotteryService { @Autowired private LotteryDao lotteryDao; @Override public void draw(String username) { // 判断用户是否已经参与过抽奖 int count = lotteryDao.countByUsername(username); if (count > 0) { throw new RuntimeException("您已经参与过抽奖,无法再次参与!"); } // 执行抽奖逻辑 String prize = lotteryDraw(); // 此处省略抽奖算法的具体实现 Lottery lottery = new Lottery(); lottery.setUserName(username); lottery.setPrizeName(prize); lotteryDao.insert(lottery); } } ``` **7. Controller层** 创建一个名为`LotteryController`的类,处理抽奖功能的请求。示例代码如下: ```java @RestController @RequestMapping("/lottery") public class LotteryController { @Autowired private LotteryService lotteryService; @PostMapping("/draw") public String draw(@RequestParam String username) { try { lotteryService.draw(username); return "抽奖成功!"; } catch (Exception e) { return e.getMessage(); // 抛出异常时返回错误信息 } } } ``` **8. 工具类** 在`com.example.util`包下创建一个名为`LotteryUtil`的类,实现抽奖算法。示例代码如下: ```java public class LotteryUtil { public static String lotteryDraw() { // 此处省略抽奖算法的具体实现 return "奖品名称"; } } ``` 以上就是一个简单的抽奖功能的示例程序。请注意:这只是一个示例程序,具体实现方式可能因需求而异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值