To create an SqlSession
you can use the SqlSessionFactory
class openSession()
method. This method offers some overloaded method that can configure the property of the session. For example, we can configure the auto-commit-mode and the transaction-isolation-level for the session.
package org.kodejava.mybatis;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.kodejava.mybatis.support.Record;
import java.io.IOException;
import java.io.Reader;
public class SqlSessionDemo {
public static void main(String[] args) throws IOException {
SqlSessionDemo demo = new SqlSessionDemo();
// Build an SqlSessionFactory.
SqlSessionFactory factory = demo.getSessionFactory();
// Create an SqlSession by using the factory.openSession() method.
// It is a good practice to use a try-with-resources block when
// working with an SqlSession. The session will be automatically
// closes when it finishes the job.
try (SqlSession session = factory.openSession()) {
Record record = session.selectOne("getRecord", 1L);
System.out.println("Record = " + record);
}
}
/**
* Build an SqlSessionFactory.
*
* @return an SqlSessionFactory.
* @throws IOException when fail to read the configuration file.
*/
private SqlSessionFactory getSessionFactory() throws IOException {
Reader reader = Resources.getResourceAsReader("configuration.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
return builder.build(reader);
}
}
Below are the configuration, mapper and the POJO.
configuration.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>
<typeAliases>
<typeAlias alias="record" type="org.kodejava.mybatis.support.Record" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/musicdb" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/kodejava/mybatis/mapper/RecordMapper.xml" />
</mappers>
</configuration>
RecordMapper.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.kodejava.mybatis.RecordMapper">
<resultMap id="recordResultMap" type="record">
<result column="release_date" property="releaseDate" />
<result column="artist_id" property="artistId" />
<result column="label_id" property="labelId" />
</resultMap>
<select id="getRecord" parameterType="java.lang.Long" resultMap="recordResultMap">
SELECT id,
title,
release_date,
artist_id,
label_id
FROM record
WHERE id = #{id}
</select>
</mapper>
Record.java
package org.kodejava.mybatis.support;
import java.io.Serializable;
import java.util.Date;
public class Record implements Serializable {
private Long id;
private String title;
private Date releaseDate;
private Long artistId;
private Long labelId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getReleaseDate() {
return releaseDate;
}
public void setReleaseDate(Date releaseDate) {
this.releaseDate = releaseDate;
}
public Long getArtistId() {
return artistId;
}
public void setArtistId(Long artistId) {
this.artistId = artistId;
}
public Long getLabelId() {
return labelId;
}
public void setLabelId(Long labelId) {
this.labelId = labelId;
}
@Override
public String toString() {
return "Record{" +
"id=" + id +
", title='" + title + '\'' +
", releaseDate=" + releaseDate +
", artistId=" + artistId +
", labelId=" + labelId +
'}';
}
}
The directory structure of the code above is:
├─ pom.xml
└─ src
└─ main
├─ java
│ └─ org
│ └─ kodejava
│ └─ mybatis
│ ├─ SqlSessionDemo.java
│ └─ domain
│ └─ Record.java
└─ resources
├─ configuration.xml
└─ org
└─ kodejava
└─ mybatis
└─ mapper
└─ RecordMapper.xml
Maven Dependencies
<dependencies>
<!-- https://search.maven.org/remotecontent?filepath=org/mybatis/mybatis/3.5.10/mybatis-3.5.10.jar -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
</dependencies>
Latest posts by Wayan (see all)
- How do I convert Map to JSON and vice versa using Jackson? - June 12, 2022
- How do I find Java version? - March 21, 2022
- How do I convert CSV to JSON string using Jackson? - February 13, 2022