您的位置:首页 > 其它

SSM框架——Mybatis框架:IDEA创建基于maven的Mybatis框架的超详细知识点总结。适合小白,新手

2020-03-14 18:22 633 查看

我们首先得知道SSM框架中的三框架:

  • S——Spring
  • S——Spring MVC
  • M——Mybatis
    今天我们就来详细讲讲如何创建一个Mybatis框架并且用到的知识点。

1.当我们创建了一个maven的基本java工程那么首先就得配置pom.xml,也就是maven工程的主配置文件。

配置pom.xml:就是导入我们需要用到的jar包坐标。

<!--packaging:打包类型-->
<packaging>jar</packaging>

<dependencies>
<!--mybatis用到的jar包:-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- 数据库驱动包:-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!--日志组件包:-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--单元测试包:-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
包之间的版本信息无所谓,但是尽量不要用比我这里还低的版本,这里可以百度maven的中心jar仓库自行查看。

2.配置Mybatis的配置文件SqlMapConfig.xml(这里的命名没有特别要求)

<?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>
<!--    配置properties
可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息
resoucer属性:
用于指定配置文件的位置,是按照类路径的写法来的,并且必须存在于类路径下。-->
<!--    配置properties-->
<properties resource="jdbcConfig.properties"></properties>
<!--    使用typeAliases配置别名,它只能配置domain中类的别名 -->
<typeAliases>
<package name="org.lmj.domain"></package>
</typeAliases>
<!--  配置环境-->
<environments default="mysql">
<!--  配置mysql环境-->
<environment id="mysql">
<!--  配置事务-->
<transactionManager type="JDBC"></transactionManager>
<!--  配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射文件的位置-->
<mappers>
<!--        <mapper resource="org/lmj/dao/UserDao.xml"></mapper>-->
<!--        package标签用于指定dao接口所在的包,指定了之后就不需要再写mapper以及resource或者class了-->
<package name="org.lmj.dao"/>
</mappers>
</configuration>

3.配置jdbcConfig.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/
jdbc.username=
jdbc.password=

配置log4j.properties:(这里推荐直接复制粘贴)

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=e:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

4. 在resources文件夹中创建一个与src.java下的路径相同的路径:

5.在持久层编写实现类接口:

public interface UserDao {
//查询所有用户
List<User> findAll();

//保存用户
void saveUser(User user);

//修改用户
void updateUser(User user);

//根据id删除用户
void deleteUser(Integer userId);

//根据id查询用户信息
User findUserId(Integer userId);

//根据名称模糊查询用户信息
List<User> findByName(String username);
}

6.在resources下的org.lmj.dao.User.xml编写数据库语句:

<?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.lmj.dao.UserDao">
<!-- 查询所有-->
<select id="findAll" resultType="org.lmj.domain.User">
select * from user ;
</select>

<!--  保存用户 parameterType:告诉传入的类型 -->
<insert id="saveUser" parameterType="org.lmj.domain.User">
insert into user(username,address,sex,birthday)value(#{username},#{address},#{sex},#{birthday});
</insert>

<!--  修改用户  -->
<update id="updateUser" parameterType="org.lmj.domain.User">
update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id};
</update>

<!--  删除用户  -->
<delete id="deleteUser" parameterType="Integer">
delete from user where id = #{id};
</delete>

<!-- 根据id查询用户-->
<select id="findUserId" parameterType="Integer" resultType="org.lmj.domain.User">
select * from user where id = #{id};
</select>

<!-- 根据名称查询用户-->
<select id="findByName" parameterType="string" resultType="org.lmj.domain.User">
select * from  user where username like #{username};
</select>

</mapper>

对了大家不要忘记编写实体类

7.test文件夹下编写测试方法进行测试

/**
* 测试mybatis的CRUD操作
*/
public class MabatisText {
private InputStream in;
private SqlSession session;
private UserDao userDao;
//公有方法,加载配置信息
@Before//在测试方法执行之前执行
public void init() throws Exception{
//读取配置文件,生成字节输入流
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//获取SqlSession对象
session = factory.openSession();
//获取dao的代理对象
userDao = session.getMapper(UserDao.class);
}
@After//用于在测试方法执行之后执行
public void destroy() throws Exception{
//提交事务
session.commit();
//释放资源
session.close();
in.close();
}

@Test
public void textFindAll(){

//执行查询所有方法
List<User> users = userDao.findAll();
for (User user : users){
System.out.println(user);
}

}
@Test
public void textSave(){
User user = new User();
user.setUsername("saveUser");
user.setAddress("上海");
user.setSex("女");
user.setBirthday(new Date());
userDao.saveUser(user);

}
@Test
public void textUpdate(){
User user = new User();
user.setId(49);
user.setUsername("updateUser");
user.setAddress("北京");
user.setSex("男");
user.setBirthday(new Date());
userDao.updateUser(user);

}
@Test
public void textDelete(){
//删除方法
userDao.deleteUser(71);

}
@Test
public void textFindone(){
//查询用户id方法
User userId = userDao.findUserId(49);
System.out.println(userId);

}
@Test
public void textFindname(){
//查询用户名称方法
List<User> username = userDao.findByName("%王%");
for (User user : username){
System.out.println(user);
}

}

如果有什么不对或者需要补充的地方欢迎给我留言

  • 点赞
  • 收藏
  • 分享
  • 文章举报
WorldThing 发布了1 篇原创文章 · 获赞 0 · 访问量 45 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: