Spring与MyBatis-plus的集成与基本使用(一)

项目结构:

1)导入spring,Mybatis-plus,jdbc等依赖

	<properties>
		<mybatisplus.version>3.2.0</mybatisplus.version>
		<spring.version>4.3.24.RELEASE</spring.version>
		<mysql.version>8.0.17</mysql.version>
		<!-- 注意只能使用2.0以下的版本 -->
		<log4j.version>1.2.17</log4j.version>
		<lombok.version>1.18.8</lombok.version>
	</properties>


	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>${lombok.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- 引入spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- mysql数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<!-- log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>


		<!-- 引入mybatis-plus -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus</artifactId>
			<version>${mybatisplus.version}</version>
		</dependency>

	</dependencies>

2)引入配置文件

1.spring的配置文件springContext.xml

2.mybatis配置文件:application-dao.xml,其中功能都有注释

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
	<!-- dao层的配置:核心是要产生 Mapper代理类对象 1.引入数据库配置信息 2.数据源配置 3.SqlSessionFactory 
		4.产生Mapper接口的代理类对象 -->
	<!-- 1.引入数据库配置信息 -->
	<context:property-placeholder location="classpath:db.properties"
		system-properties-mode="FALLBACK" />
	<!--2.数据源配置 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="${driver}"></property>
		<property name="url" value="${url}"></property>
		<property name="username" value="${user}"></property>
		<property name="password" value="${password}"></property>
	</bean>

	<!-- 3.SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>

	    <property name="globalConfig" ref="globalConfig"></property>
		<!-- 加载xxMapper.xml原生mybatis配置文件 -->
		<property name="mapperLocations">
			<array>
				<value>classpath:mapper/*Mapper.xml</value>
			</array>
		</property>
		
		<!-- 配置分页插件 -->
		<property name="plugins">
			<array>
				<bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
				</bean>
			</array>
		</property>
	</bean>
	<!-- 声明全局配置 -->
	<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
		<!-- 指定主键自动增长类型 -->
		<property name="dbConfig" ref="dbConfig"></property>
	</bean>
	<bean id="dbConfig"
		class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
		<property name="idType" value="AUTO"></property>
	</bean>

	<!-- 4.产生Mapper接口的代理类对象 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 需要生成代理类对象的mapper接口包 -->
		<property name="basePackage" value="com.demo.mapper"></property>
		<!-- sqlSessionFactory 的name 用于为代理类中生成SqlSession -->
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>

</beans>

 3.db.properties文件配置

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC
user=root
password=123456

3)User类的设计

其中数据库表为:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName(value="sys_user")//建立User.class和数据库表sys_user的关系
public class User implements Serializable{
	
   private static final long serialVersionUID=1L;
   
   //@TableId(value="userId")//代表他是主键,且value为表中的名称
   private Integer id;
   //@TableField(value="user_name")
   private String name;
   private String address;
   private Date birth;
}

4)UserMapper类设计

//BaseMapper已经有User的crud操作了
public interface UserMapper extends BaseMapper<User>{

}

5)测试java类测试

public class AppTest {
    public static void main(String[] args) {
		ApplicationContext context =new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		UserMapper userMapper=context.getBean(UserMapper.class);
		
		//插入
		//userMapper.insert(new User(111, "小米", "浦东", new Date()));
		
		
		//更新
		//userMapper.updateById(new User(112,"大明","武汉",new Date()));
		
		/*UpdateWrapper<User> updatewWrapper =new UpdateWrapper<User>();
		//updatewWrapper.eq(true, "name", "大明");//相当于sql中的where name='大明'
		updatewWrapper.between(true, "id", 1, 2);//相当与sql中的where id between 1 and 2;
		userMapper.update(new User(112, "小米米", "浦东", new Date()), updatewWrapper);
		*/
		
		//删除
		//userMapper.deleteById(112);
		//批量删除
		/*List<Integer> idList =new ArrayList<Integer>();
		idList.add(113);
		idList.add(114);
		idList.add(115);
		userMapper.deleteBatchIds(idList);*/
		/*QueryWrapper<User> wrapper =new QueryWrapper<User>();
		wrapper.between(true, "id", 1, 2);
		userMapper.delete(wrapper);*/
		
		
		//查询
		/*User user=userMapper.selectById("1");
		System.out.println(user);*/
		
		/*Collection<Serializable> idlCollection =new ArrayList<Serializable>();
		idlCollection.add(1);
		idlCollection.add(2);
		List<User> users=userMapper.selectBatchIds(idlCollection);
		for (User user2 : users) {
			System.out.println(user2);
		}*/
		
		//相当于where name='小米米' and address='浦东'
		/*Map<String, Object> columnMap =new HashMap<String, Object>();
		columnMap.put("name", "小米米");
		columnMap.put("address", "浦东");
		List<User> users=userMapper.selectByMap(columnMap);
		for (User user2 : users) {
			System.out.println(user2);
		}*/
		
		
		//Integer count =userMapper.selectCount(null);
		/*QueryWrapper<User> queryWrapper =new QueryWrapper<User>();
		String name ="王五";
		queryWrapper.like(name!=null, "name", name);
		Integer count =userMapper.selectCount(queryWrapper);
		System.out.println(count);*/
		
		
		//分页,这里要写配置文件
		IPage<User> page =new Page<User>(1,2);
		userMapper.selectPage(page, null);//查询后自动保存到page中
		System.out.println("总条数:"+page.getTotal());
		List<User> users =page.getRecords();
		for (User user : users) {
			System.out.println(user);
		}
		
	}
}

猜你喜欢

转载自blog.csdn.net/qq_37431224/article/details/103976970