美文网首页
Spring中的ORM

Spring中的ORM

作者: 莯北_16ea | 来源:发表于2019-04-18 09:19 被阅读0次

    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.driverClassName}"/> <property name="url" value="{jdbc.url}"/>
    <property name="username" value="{jdbc.username}"/> <property name="password" 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);
    }
    }

    最后进行测试

    image

    相关文章

      网友评论

          本文标题:Spring中的ORM

          本文链接:https://www.haomeiwen.com/subject/ggaawqtx.html