.Net 程序员 学习Mybatis 入门篇

时间飞逝,又是一个周末的到来,对于苦逼的程序员来说是放松施压的时候了,本来打算出去看看山玩玩水,没想到一睁眼醒来外面下去了大雨,看来美好的时光又只能在一个10平方米的出租屋里面度过了呜呜呜呜,坐在床上开始捣鼓手机看看这玩玩那 ,玩着玩着感觉挺没意思,想想难道我这一天就这样度过吗,那这个时间是多么的浪费啊,想想还是学一点技术吧,毕竟可以充实一下自己,提升自己的能力,想想学点啥呢?突然想起周五项目经理对我说,我们组要用java开发项目了有时间看看java相关的质料 ,卧槽幸好自己之前有自学过但是没有真正的项目实战经验,想想这倒是一个机会,但是又没说用啥框架,于是自己网上搜索了一下用java做项目常用的框架 spring spingmvc ,ORM 用的最多的是 mybatis 。但是对Mybatis 不熟悉,于是百度各种资料,好了废话不多说开始撸起袖子干,写的不好望大神不要喷。

一:intellij idea中搭建Mybatis简单例子,并对数据库做增删改查

   1、什么是MyBatis?

              官方解释: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

 二、Intellij idea 工具搭建配置 略 这里不多讲解怎么配置想知道怎么配置请看后续文章

 三、Intellij idea 创建项目

     1、创建项目

然后点击下一步,此时会弹出一个New Project 框架如下图

 

 

2、Mybatis 配置

  2.1、在配置之前准备好 hamcrest-core-1.1.jar包,junit-4.10.jar包 ,log4j-1.2.17.jar包,mybatis-3.4.6.jar包,mysql-connector-java-8.0.16.jar 包

 

  2.2、选中MyBatis项目新建文件夹取名lib

把准备好的架包放到lib中

此时会弹出框添加lib 点击确定

3、创建数据库,创建表这里不介绍

4、创建包,代码结构如下

5、src下创建文件jdbc.properties

代码如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

6、

src下添加mybatis配置文件mybatis.cfg.xml 代码如下 注意可以看官网http://www.mybatis.org/mybatis-3/zh/configuration.html#mappers

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/web" relative="/" />
</webroots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="Tomcat 9.0.12" level="application_server_libraries" />
<orderEntry type="library" name="lib" level="project" />
</component>
</module>

7、log4j.properties

### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger=debug,stdout,logfile

### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n

###显示SQL语句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

8、创建bean 实体 


//用户
public User(){

};
public User(String username,String password,Double account){
this.username=username;
this.password=password;
this.account=account;
}
private Integer id;
private String username;
private String password;
private Double account;
public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public Double getAccount() {
return account;
}

public void setAccount(Double account) {
this.account = account;
}




public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + ", account=" + account + "]";
}
}

9、创建用户接口以及Maper

 

ublic interface UserMapper {
/**
* 新增用戶
* @param user
* @return
* @throws Exception
*/
public int insertUser(User user) throws Exception;
/**
* 修改用戶
* @param user
* @param id
* @return
* @throws Exception
*/
public int updateUser (User user,int id) throws Exception;
/**
* 刪除用戶
* @param id
* @return
* @throws Exception
*/
public int deleteUser(int id) throws Exception;
/**
* 根据id查询用户信息
* @param id
* @return
* @throws Exception
*/
public User selectUserById(int id) throws Exception;
/**
* 查询所有的用户信息
* @return
* @throws Exception
*/
public List<User> selectAllUser() throws Exception;
}

 UserMapper.xml 代<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.learn.mybatis.mapper.UserMapper">
<resultMap id="userMap" type="User">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="username" column="username" javaType="java.lang.String"></result>
<result property="password" column="password" javaType="java.lang.String"></result>
<result property="account" column="account" javaType="java.lang.Double"></result>
</resultMap>

<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into user (username,password,account) values (#{username},#{password},#{account})
</insert>

<update id="updateUser" >
update user set username=#{username},password=#{password},account=#{account} where id=#{id}
</update>

<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>

<select id="selectUserById" parameterType="int" resultMap="userMap">
select * from user where id=#{id}
</select>

<select id="selectAllUser" resultMap="userMap">
select * from user
</select>
</mapper>

10、mybatis.cfg.xml里注册UserMapper.xml文件 
mybatis.cfg.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 resource="jdbc.properties"></properties>
<typeAliases >
<package name="com.learn.mybatis.beans"/>
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments default="cybatis">
<environment id="cybatis">
<transactionManager type="JDBC" />

<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="com/learn/mybatis/mapper/UserMapper.xml"/>
</mappers>

</configuration>
11、最后添加 工具文件类
public class DBTools {
public static SqlSessionFactory sessionFactory;

static{
try {
//使用MyBatis提供的Resources类加载mybatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
//构建sqlSession的工厂
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}

}
//创建能执行映射文件中sql的sqlSession
public static SqlSession getSession(){
return sessionFactory.openSession();
}
}
12、编写测试单元 代码如下

public class UserServiceTest {
@Test
//添加操作
public void insertUser() throws Exception {
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User("测试1", "124456", 8888.8);
try {
mapper.insertUser(user);
System.out.println(user.toString());
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

@Test
//删除操作
public void deleteUser() throws Exception {
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
mapper.deleteUser(1);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

@Test
//选择操作
public void selectUserById() throws Exception {
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
User user =mapper.selectUserById(2);
System.out.println(user.toString());

session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

@Test
public void selectAllUser() throws Exception {
SqlSession session= DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
List<User> user=mapper.selectAllUser();
System.out.println(user.toString());
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
}
结果

 


                                                                                                          好了到此为止 已经结束
posted @ 2019-06-29 19:27  醉孟子  阅读(811)  评论(0)    收藏  举报