您的位置:首页 > 其它

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

2017-05-05 09:14 459 查看

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.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
username=你的用户名
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配置文件*/
@ContextConfig
a13c
uration({"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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息