Spring-data JPA初次接触

来源:互联网 发布:got it 编辑:程序博客网 时间:2024/05/18 13:27

Spring-data JPA初次接触

spring-jpa.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"    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"    xmlns:repository="http://www.springframework.org/schema/data/repository"    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-4.3.xsd        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.8.xsd        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd        http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.11.xsd">    <!-- 加载配置文件 -->    <context:property-placeholder location="classpath:jdbc.properties" />    <!-- 自动扫描包 -->    <context:component-scan base-package="cn.nb12.jpa.dao"></context:component-scan>    <context:component-scan base-package="cn.nb12.jpa.service"></context:component-scan>    <!-- 数据源 -->    <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}" />        <property name="minIdle" value="5" />        <property name="maxActive" value="10" />        <property name="initialSize" value="2" />    </bean>    <!-- 配置jpa 本地容器实体管理器工厂 packagesToScan 指定所有@Entity的实体类所在的包 -->    <bean id="emf"        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">        <!-- 数据源 -->        <property name="dataSource" ref="dataSource" />        <!-- 配置jpa实现的适配器 -->        <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"></property>        <!-- 实体类对象扫描包 -->        <property name="packagesToScan" value="cn.nb12.jpa.po"></property>        <!-- 实现方的配置 -->        <property name="jpaProperties">            <props>                <prop key="hibernate.format_sql">true</prop>            </props>        </property>    </bean>    <!-- 配置jpa实现的适配器 -->    <bean id="hibernateJpaVendorAdapter"        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">        <!-- 显示sql -->        <property name="showSql" value="true" />        <!-- 方言 -->        <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"></property>    </bean>    <!-- jpa的事务处理器 -->    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">        <!-- 实体管理器工厂 -->        <property name="entityManagerFactory" ref="emf" />        <!-- 数据源 -->        <property name="dataSource" ref="dataSource" />    </bean>    <!-- 配置事务注解处理 -->    <tx:annotation-driven proxy-target-class="false"        transaction-manager="txManager" />    <!-- 配置spring data jpa 仓库(repository) -->    <jpa:repositories base-package="cn.nb12.jpa.dao"        entity-manager-factory-ref="emf" transaction-manager-ref="txManager" /></beans>

User.java

package cn.nb12.jpa.po;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;/** * 用户 *  * @ClassName User * @Description TODO(这里用一句话描述这个类的作用) * @author: yhld456 yhld456@hotmail.com * @Date 2017年5月31日 上午10:12:37 * @version 1.0.0 */@Entity@Table(name="user")public class User implements java.io.Serializable {    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue(strategy=GenerationType.IDENTITY)    @Column(name="id")    private Integer id;    private String username;    private String password;    private String nickname;    private String phone;    private String sex;    private java.util.Date createTime;    public User() {        super();    }    ...}

UserDao.java

package cn.nb12.jpa.dao;import java.util.List;import cn.nb12.jpa.po.User;/** * 用户dao *  * @ClassName UserDao * @Description TODO(这里用一句话描述这个类的作用) * @author: yhld456 yhld456@hotmail.com * @Date 2017年5月31日 上午10:18:59 * @version 1.0.0 */public interface UserDao {    /**     * 查找所有     *      * @Description (TODO这里用一句话描述这个方法的作用)     * @author: yhld456 yhld456@hotmail.com     * @Date 2017年5月31日 上午10:21:00     * @version 1.0.0     * @return     */    List<User> findAll();    /**     * 添加     *      * @Description (TODO这里用一句话描述这个方法的作用)     * @author: yhld456 yhld456@hotmail.com     * @Date 2017年5月31日 上午10:21:06     * @version 1.0.0     * @param u     */    void addUser(User u);    /**     * 更新     *      * @Description (TODO这里用一句话描述这个方法的作用)     * @author: yhld456 yhld456@hotmail.com     * @Date 2017年5月31日 上午10:21:10     * @version 1.0.0     * @param u     */    void updateUser(User u);    /**     * 删除     *      * @Description (TODO这里用一句话描述这个方法的作用)     * @author: yhld456 yhld456@hotmail.com     * @Date 2017年5月31日 上午10:21:16     * @version 1.0.0     * @param id     */    void deleteById(int id);    /**     * 根据id查     *      * @Description (TODO这里用一句话描述这个方法的作用)     * @author: yhld456 yhld456@hotmail.com     * @Date 2017年5月31日 下午2:26:46     * @version 1.0.0     * @param id     * @return     */    User findById(int id);    /**     * 用户登录     *      * @Description (TODO这里用一句话描述这个方法的作用)     * @author: yhld456 yhld456@hotmail.com     * @Date 2017年5月31日 下午2:48:11     * @version 1.0.0     * @param uname     * @param pwd     * @return     */    User login(String uname, String pwd);}

UserDaoImpl.java

package cn.nb12.jpa.dao.impl;import java.util.List;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import org.springframework.stereotype.Repository;import cn.nb12.jpa.dao.UserDao;import cn.nb12.jpa.po.User;/** * 用户dao的实现 *  * @ClassName UserDaoImpl * @Description TODO(这里用一句话描述这个类的作用) * @author: yhld456 yhld456@hotmail.com * @Date 2017年5月31日 上午10:19:59 * @version 1.0.0 */@Repositorypublic class UserDaoImpl implements UserDao {    /**     * 通过注解的方式拿到持久上下文的bean管理器(EntityManager)     */    @PersistenceContext    private EntityManager em;    @Override    public List<User> findAll() {        // 通过jpql查        return em.createQuery("select u from User u", User.class).getResultList();    }    @Override    public void addUser(User u) {        em.persist(u);    }    @Override    public void updateUser(User u) {        em.merge(u);    }    @Override    public void deleteById(int id) {        int rows = em.createQuery("delete User u where u.id=:id").setParameter(1, id).executeUpdate();        if (rows > 0) {            System.out.println("删除成功");        }    }    @Override    public User findById(int id) {        return em.find(User.class, id);    }    @Override    public User login(String uname, String pwd) {        return em.createQuery("select u from User u where u.username=:username and u.password=:password",User.class)        .setParameter("username", uname)        .setParameter("password", pwd)        .getSingleResult();    }}

service和controller和以前的一样

原创粉丝点击