在IntelliJ IDEA上使用Maven搭建SSM框架(二)

来源:互联网 发布:nginx 返回数据截断 编辑:程序博客网 时间:2024/06/06 17:19

1.配置MyBatis


首先在MySQL数据库中创建简单测试的数据库



然后在项目src/main/java上新建一个实体的包: org.first.entity 和dao层的包:org.first.dao

在entity包下创建实体类,User.java (实体类名与表名一致)

public class User {    private int id;    private String name;    private int sex;    private Date createTime;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getSex() {        return sex;    }    public void setSex(int sex) {        this.sex = sex;    }    public Date getCreateTime() {        return createTime;    }    public void setCreateTime(Date createTime) {        this.createTime = createTime;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", sex=" + sex +                ", createTime=" + createTime +                '}';    }}

在dao包中创建Dao接口,UserDao.java

public interface UserDao {    /**     * 根据偏移量查询用户列表     * @param offser     * @param limit     * @return     */    List<User> queryAll(@Param("offset") int offser,@Param("limit") int limit);    int insertUser(User user);}

在src/main/resources下创建MyBatis配置文件mybatis-config.xml 和 mapper包(存放MyBatis的SQL映射)

打开MyBatis的官方文档 点击打开链接

选择入门标签,找到MyBatis全局配置 复制dtd 到 mybatis-config.xml 中开始配置MyBatis

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- 配置全局属性 -->    <settings>        <!-- 使用jdbc的getGeneratedKeys 获取数据可自增主键值 -->        <setting name="useGeneratedKeys" value="true"/>        <!-- 使用列别名替代列名 默认:true -->        <setting name="useColumnLabel" value="true"/>        <!-- 开启驼峰命名转换:Table(create_time)-> Entity(createTime) -->        <setting name="mapUnderscoreToCamelCase" value="true"/>    </settings></configuration>

使用mapper实现Dao接口,在mapper包下创建 UserDao.xml,在官方文档xml配置找到他的事例,复制dtd 

<?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="org.first.dao.UserDao">    <!-- 为DAO接口方法提供SQL语句配置 -->    <!-- 根据方法选择标签update,delete,select,insert-->    <select id="queryAll" resultType="User">        select id,name,sex,create_time        from user        order by create_time desc        limit #{offset},#{limit}    </select>    <insert id="insertUser" parameterType="User">        insert into user (id,name,sex,create_time)        values (#{id},#{name},#{sex},now())    </insert></mapper>

namespace为Dao的路径,id为Dao的方法名,resultType为返回值类型,parameterType为传入参数类型

2.MyBatis整合Spring

实现更少的编码,只写接口,不写实现。

在src/main/resources下创建jdbc.properties

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8username=你的用户名password=你的密码

在src/main/resources下创建spring包,并创建spring-dao.xml 配置所有dao相关的配置

查看spring的官方文档:(根据自己的版本号选择)



选择pdf查看官方文档,编写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">    <!-- 配置整合MyBatis -->    <!-- 1:配置数据库相关参数 -->    <context:property-placeholder location="classpath:jdbc.properties" system-properties-mode="FALLBACK"/>    <!-- 2:数据库连接池 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <!-- 配置连接池属性 -->        <property name="driverClass" value="${driver}"/>        <property name="jdbcUrl" value="${url}"/>        <property name="user" value="${username}"/>        <property name="password" value="${password}"/>        <!-- c3p0连接池的私有属性 -->        <property name="maxPoolSize" value="30"/>        <property name="minPoolSize" value="10"/>        <property name="autoCommitOnClose" value="false"/>        <property name="checkoutTimeout" value="1000"/>        <!-- 当获取连接失败重试次数 -->        <property name="acquireRetryAttempts" value="2"/>    </bean>    <!-- 3:配置SQLSessionFactory对象 -->    <bean id="sqlSessionFactroy" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource"/>        <!-- 配置MyBatis全局配置文件:mybatis-config.xml -->        <property name="configLocation" value="classpath:mybatis-config.xml"/>        <!-- 扫描entity包 使用别名 -->        <property name="typeAliasesPackage" value="org.first.entity"/>        <!-- 扫描sql配置文件:mapper需要的xml文件 -->        <property name="mapperLocations" value="classpath:mapper/*.xml"/>    </bean>    <!-- 4:配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <!-- 注入SQLSessionFactory -->        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactroy"/>        <!-- 给出需要扫描Dao接口包 -->        <property name="basePackage" value="org.first.dao"/>    </bean></beans>

注意:jdbc.properties中的username会从系统环境中读取用户名,据我所知有两种解决方法:
(1)修改jdbc.properties中的username为jdbc.username
(2)在spring-dao.xml的context标签中添加system-properties-mode="FALLBACK"
我在该例中使用的是第二种方法。

可自行用junit测试。

@RunWith(SpringJUnit4ClassRunner.class)/*junit加载spring配置文件*/@ContextConfiguration({"classpath:spring/spring-dao.xml"})public class UserDaoTest {    @Resource    private UserDao userDao;    @Test    public void queryAll() throws Exception {        List<User> users=userDao.queryAll(0,5);        for(User user:users){            System.out.println(user);        }    }    @Test    public void insertUser() throws Exception {        User user=new User();        user.setName("小花");        user.setSex(0);        int result=userDao.insertUser(user);        System.out.println(result);    }}






0 0
原创粉丝点击