xml配置文件开发
开发中要使用的基本的注解
- Spring中的标签
beans
:基础标签bean
:创建beanimport
:引入其他的Spring配置文件context:property-placeholder
:加载外部配置文件
- Mybatis - Mapper文件中的标签
mapper
:基础标签resultMap
:建立SQL查询结果字段与实体属性的映射关系select
:查询insert
:新增delete
:删除update
:更新
Spring整合Mybatis小Demo(xml版)
Spring配置文件
我这里分三个配置文件,其实一个就够了,三个好理解一点
数据源配置文件
DataSource.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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="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"> <context:property-placeholder location="classpath:/db.properties" /> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}"/> </bean> </beans>
Mybatis配置文件
SpringMybatis.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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="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"> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.spring.mybatis.pojo" /> <property name="mapperLocations" value="classpath:/mapper/*.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.spring.mybatis.dao" /> </bean> </beans>
配置文件主文件
SpringConfig.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="classpath:DataSource.xml"/> <import resource="classpath:SpringMybatis.xml"/> <bean id="userService" class="com.spring.mybatis.service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"/> </bean> </beans>
Mybatis配置文件
数据库配置文件:
UserMapper.xml
<?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.spring.mybatis.dao.UserDao"> <resultMap id="user" type="com.spring.mybatis.pojo.User"> <result property="password" column="userPassword"/> </resultMap> <select id="selectUser" resultMap="user"> select * from smbms_user </select> </mapper>
数据源参数配置文件
数据源参数配置:
db.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/smbms?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC jdbc.username=xxxx jdbc.password=xxxx
UserDao.java
public interface UserDao {
List<User> selectUser();
}
UserService.java
public interface UserService {
List<User> selectUser();
}
UserServiceImpl.java
public class UserServiceImpl implements UserService {
private UserDao userDao;
@Override
public List<User> selectUser() {
return userDao.selectUser();
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
UserTest.java
public class UserTest {
@Test
public void UserTest(){
ApplicationContext context =
new ClassPathXmlApplicationContext("SpringConfig.xml");
UserService userService = context.getBean("userService", UserService.class);
List<User> users = userService.selectUser();
for (User user : users) {
System.out.println(user);
}
}
完全注解开发
开发中要使用的基本的注解
-
Spring中的注解
-
@Configuration
:用于定义配置类 -
@Import
:用来整合所有@Configuration注解中定义的bean配置。 -
@Bean
:用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。 -
@Value
:将与配置文件中的键对应的值分配给其带注解的属性。 -
@PropertySource
:用于指定资源文件读取的位置,它不仅能读取properties
文件,也能读取xml
文件,并且通过YAML
解析器,配合自定义PropertySourceFactory
实现解析YAML
文件。 -
@MapperScan
:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类 -
@ComponentScan
:用于指定创建容器时要扫描的包,该注解在指定扫描的位置时,可以指定包名,也可以指定扫描的类。 -
Mybatis中的注解
@Mapper
:将mapper
接口交给Spring进行管理@Insert
:新增@Select
:查询@Update
:修改@Delete
:删除
Spring整合Mybatis小Demo(注解版)
配置类取代配置文件
我在这里将配置类分成了三个部分,对应上面三个配置文件,最后通过
@Import
进行整合数据源配置类
DataSourceConfig.java
@PropertySource("classpath:/db.properties") @MapperScan("com.spring.dao") public class DataSourceConfig { @Value("${jdbc.driver}") private String driverClassName; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean("dataSource") public DruidDataSource getDruidDataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } }
Mybatis配置类:
MybatisConfig.java
public class MybatisConfig { @Bean("sqlSessionFactory") public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); return sqlSessionFactoryBean; } }
Spring配置类(主配置类):
SpringConfig.java
@Configuration @ComponentScan({"com.spring"}) @Import({DataSourceConfig.class, MybatisConfig.class}) public class SpringConfig {}
注解SQL替代配置SQL
@Mapper public interface UserMapper { @Insert("insert into " + "smbms_user(proCode,proName,userPassword) " + "value(#{proCode},#{proName},#{userPassword})") int insertUser(User user); @Update("update smbms_user set " + "proCode=#{proCode},proName=#{proName},userPassword=#{userPassword} " + "where id=#{id}") int updateUserById(User user); @Delete("delete from smbms_user where id=#{id}") int deleteUserById(int id); @Select("select * from smbms_user") List<User> selectUser(); }
UserMapper.java
@Mapper
public interface UserDao {
@Insert("insert into " +
"smbms_user(proCode,proName,userPassword) " +
"value(#{proCode},#{proName},#{userPassword})")
int insertUser(User user);
@Update("update smbms_user set " +
"proCode=#{proCode},proName=#{proName},userPassword=#{userPassword} " +
"where id=#{id}")
int updateUserById(User user);
@Delete("delete from smbms_user where id=#{id}")
int deleteUserById(int id);
@Select("select * from smbms_user")
List<User> selectUser();
}
UserService.java
public interface UserService {
int insertUser(User user);
public List<User> selectUser();
}
UserServiceImpl.java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
public int insertUser(User user) {
return userDao.insertUser(user);
}
public List<User> selectUser(){
return userDao.selectUser();
}
}
UserTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class UserTest {
@Autowired
private UserService userService;
@Test
public void userTest01() {
List<User> users = userService.selectUser();
for (User user : users) {
System.out.println(user);
}
}
}