mybatis基础应用学习记录
1.创建项目
创建一个maven项目
1.File-New-Project
2.
3.一路next下去就好
4.在pom.xml文件中加入以下代码:
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<!-- 这是mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!-- 这是java数据库连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
5.项目结构如图所示(初学者,大佬勿喷)
2. 配置mybatis
xml配置文件
1.下载mybatis源码包 https://github.com/mybatis/mybatis-3/releases
2.mybatis有两个配置文件,其在源码包中的位置如图所示
3.将其拿出放入项目中
4. Configuration.xml解析(xml文件名可以自定义)
- 配置一个别名,使用时可以直接用别名
<typeAliases>
<typeAlias alias="User" type="cn.wx.xx.utils.User"/>
</typeAliases>
- 数据库配置,使用的是mysql数据库
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/accounts"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
- 加载数据库操作相关的配置文件,可以加载多个xml文件
<mappers>
<mapper resource="User.xml"/>
</mappers>
5.User.xml文件解析(xml文件名可以自定义)
- 命名空间,相当于给这个xml文件命名,以本配置为例,后面调用时,使用User.xxx调用xml里面的配置
<mapper namespace="User">
- 关系映射
- 第一行:type标签指向User类,id则是为这个resultMap定义一个名字
- 第二行:id代表本条配置在数据库中是主键。column标签的值对应数据库里的列,jdbcType对应数据库里本列的类型,property对应User类中的值。
- 第三行:result代表本条配置在数据库中不是主键,剩余配置同上
<resultMap type="cn.wx.xx.utils.User" id="User">
<id column="UID" jdbcType="INTEGER" property="id"/>
<result column="accountname" jdbcType="VARCHAR" property="accountname"/>
<result column="password" jdbcType="VARCHAR" property="password"/>
<result column="email" jdbcType="VARCHAR" property="email"/>
<result column="status" jdbcType="VARCHAR" property="status"/>
<result column="code" jdbcType="VARCHAR" property="code"/>
</resultMap>
- 数据库操作,SQL语句
- 第一行:select,表示查询(其他标签还有如delete、insert、update)。id表示这条配置的名字,在这一个配置文件中,id是唯一的,使用时,以命名空间.id调用,即本例为User.findName。parameterType是指传入的值类型。resultType是返回值的类型
- 第二行:#{id}是需要拼接的值
<select id="findName" parameterType="int" resultType="User" >
select * from accounts where UID = #{id}
</select>
3.相关代码
1.User.java代码
package cn.wx.xx.utils;
public class User {
private int id;
private String accountname;
private String password;
private String email;
private String status;
private String code;
/*
*get and set 方法省略
*/
4.使用mybatis
1.读取配置文件
Reader reader = Resources.getResourceAsReader("Configuration.xml");
2.使用SqlSessionFactory获取连接
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
3.打开一个连接会话
SqlSession sqlSession = sqlSessionFactory.openSession();
4.获取session
con = sqlSession.getSqlSession();
5.通过Sqlsession执行sql语句,并保存到User对象
User user = new User();
user = sqlSession.selectOne("User.findName",24);
/*两个参数,第一个是使用‘命名空间.id’调用xml中sql语句的配置
*第二个参数,是xml中,#{id}需要的值
*/
5.到此mybatis入门使用就算完结了,后续还得多多学习更深的应用技巧。
6.完整java代码贴出(大佬勿喷,本屌丝萌新一个)
1.mysqlcon.java
package cn.wx.xx.dao;
import cn.wx.xx.utils.User;
import cn.wx.xx.utils.mysqlCon;
import org.apache.ibatis.session.SqlSession;
import java.io.IOException;
public class testmysql {
public User cxinfo(){
mysqlCon con = new mysqlCon();
SqlSession sqlSession =null;
User user = new User();
try {
sqlSession = con.getSqlSession();
//通过Sqlsession执行sql语句
user = sqlSession.selectOne("User.findName",24);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(sqlSession != null){
sqlSession.close();
}
}
System.out.println(user.getAccountname());
return user;
}
public static void main(String[] args) {
testmysql t = new testmysql();
User user;
user = t.cxinfo();
System.out.println(user.getEmail());
}
}
2.testmysql.java
package cn.wx.xx.dao;
import cn.wx.xx.utils.User;
import cn.wx.xx.utils.mysqlCon;
import org.apache.ibatis.session.SqlSession;
import java.io.IOException;
public class testmysql {
public User cxinfo(){
mysqlCon con = new mysqlCon();
SqlSession sqlSession =null;
User user = new User();
try {
sqlSession = con.getSqlSession();
//通过Sqlsession执行sql语句
user = sqlSession.selectOne("User.findName",24);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(sqlSession != null){
sqlSession.close();
}
}
System.out.println(user.getAccountname());
return user;
}
public static void main(String[] args) {
testmysql t = new testmysql();
User user;
user = t.cxinfo();
System.out.println(user.getEmail());
}
}
3.User.java
package cn.wx.xx.utils;
public class User {
private int id;
private String accountname;
private String password;
private String email;
private String status;
private String code;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getAccountname() { return accountname; }
public void setAccountname(String accountname) { this.accountname = accountname; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; }
public String getCode() { return code; }
public void setCode(String code) { this.code = code; }
}
4.数据库如图所示