ORM简介
对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的--"虚拟对象数据库".
ORM的方法论基于三个核心原则:
- 简单:以最基本的形式建模数据
- 传达性:数据库结构被任何人都能理解的语言文档化
- 精确性:基于数据模型创建正确标准化的结构
Spring对ORM的框架支持
spring中支持ORM的框架有hibernate、mybatis、JPA等.但是其中JPA是一种规范,hibernate和mybatis都遵循JPA规范,在应用中:
建立新的模块,添加依赖
image
在资源包中添加连接数据库的文件和配置
jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_spring?useUnicode=true&useSSL=false&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
spring_mybatis.xml
<context:property-placeholder location="classpath:jdbc.properties"/>
<context:component-scan base-package="com.spring.orm.service"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="{jdbc.url}"/>
<property name="username" value="{jdbc.password}"/>
<property name="initialSize" value="20"/>
<property name="maxActive" value="20"/>
<property name="minIdle" value="0"/>
<property name="maxWait" value="60000"/>
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="testWhileIdle" value="false"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.spring.orm.entity"/>
</bean>
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.spring.orm.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="markerInterface" value="com.spring.orm.dao.BaseDAO"/>
<property name="properties">
<value>
mappers = com.spring.orm.dao.BaseDAO
IDENTITY = MYSQL
</value>
</property>
</bean>
<bean id="manager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="manager"/>
完成类中的编写
User
@Table(name = "t_user")//表单的名称
@Data
public class User {
//标注主键和主键生成策略
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String account;
private String password;
private Integer credits;
}
BaseDAO
public interface BaseDAO<T> extends Mapper<T>, MySqlMapper<T> {
}
UserDAO
public interface UserDAO extends BaseDAO<User>{
}
UserService
List<User> selectUsers();//查询所有
int addUsers(User user);//插入
int deleteUser(long id);//删除
int updateUser(User user);//更新
User selectOneUser(long id);//根据id查询
UserServiceImpl
//标注本类是一个Service组件
@Service
//在Service层启动事务
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
@Override
public List<User> selectUsers() {
return userDAO.selectAll();
}
@Override
public int addUsers(User user) {
return userDAO.insert(user);
}
@Override
public int deleteUser(long id) {
return userDAO.deleteByPrimaryKey(id);
}
@Override
public int updateUser(User user) {
return userDAO.updateByPrimaryKey(user);
}
@Override
public User selectOneUser(long id) {
return userDAO.selectByPrimaryKey(id);
}
}
网友评论