mybatis一般可使用两种配置方式,一种代理方式,一种非代配置
<configuration>
<properties resource="jdbc.properties" />
<typeAliases>
<package name="com.bjlemon.mybatis.domian"/>
typeAliases>
<environments default="mybatis_1">
<environment id="mybatis_1">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="com/bjlemon/mybatis/mapper/userMapper.xml"/>
mappers>
configuration>
package com.bjlemon.mybatis.domian;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
public class User implements Serializable{
private Integer id;
private String name;
private String password;
private Float salary;
private Date birthday;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Float getSalary() {
return salary;
}
public void setSalary(Float salary) {
this.salary = salary;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id) &&
Objects.equals(name, user.name) &&
Objects.equals(salary, user.salary) &&
Objects.equals(birthday, user.birthday);
}
@Override
public int hashCode() {
return Objects.hash(id, name, salary, birthday);
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", salary=" + salary +
", birthday=" + birthday +
'}';
}
}
userMapper.xml
<mapper namespace="mybatis_in_action">
<insert id="insert" parameterType="User">
INSERT INTO
mybatis_user(user_name,user_password,user_salary,user_birthday)
VALUE
(#{name},#{password},#{salary},#{birthday})
insert>
<select id="findAll" resultType="User">
SELECT
user_id id ,
user_name name,
user_password password ,
user_salary salary ,
user_birthday birthday
FROM
mybatis_user
select>
mapper>
UserService接口
package com.bjlemon.mybatis.service;
import com.bjlemon.mybatis.domian.User;
import java.util.List;
public interface UserService {
void addUser(User user);
List findAllUserList();
}
UserService实现类
package com.bjlemon.mybatis.service.impl;
import com.bjlemon.mybatis.domian.User;
import com.bjlemon.mybatis.service.UserService;
import com.bjlemon.mybatis.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class UerServiceImpl implements UserService{
@Override
public void addUser(User user) {
SqlSession sqlSession = null;
if (user == null) {
throw new IllegalArgumentException("");
}
try{
sqlSession = MybatisUtils.getSqlSession();
/*
如何mapper文件使用不是代理模式 则此处需要写成
namespace+方法名
使用的为代理模式时,则可以直接使用方法名
*/
sqlSession.insert("mybatis_in_action.insert", user);
sqlSession.commit();
}catch (Exception e){
e.printStackTrace();
}finally {
MybatisUtils.clolseSqlSession();
}
}
@Override
public List findAllUserList() {
SqlSession sqlSession = null;
List userList = Collections.emptyList(); // 避免空指针异常
try{
sqlSession = MybatisUtils.getSqlSession();
userList = sqlSession.selectList("mybatis_in_action.findAll");
}catch (Exception e){
e.printStackTrace();
}finally {
MybatisUtils.clolseSqlSession();
}
return userList;
}
}
mybatis的sqlSession的创建
package com.bjlemon.mybatis.util;
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 java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactoryBuilder builder;
private static SqlSessionFactory sqlSessionFactory;
//使得sqlSession线程安全
private static ThreadLocal sqlSessionHolder = new ThreadLocal<>();
static {
try{
builder = new SqlSessionFactoryBuilder();
// 读取配置文件
// InputStream in=MybatisUtils.class.getResourceAsStream("/mybatis.xml");
InputStream resource = Resources.getResourceAsStream("mybatisConfig.xml");
sqlSessionFactory = builder.build(resource);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 保证sqlSesssion线程安全
* @return
*/
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionHolder.get();
if (sqlSession == null){
sqlSession = sqlSessionFactory.openSession();
sqlSessionHolder.set(sqlSession);
}
return sqlSession;
}
public static void clolseSqlSession(){
SqlSession sqlSession = sqlSessionHolder.get();
if (sqlSession != null){
sqlSession.close();
sqlSessionHolder.remove();
}
}
}
测试
package com.bjlemon.mybatis.service.impl;
import com.bjlemon.mybatis.domian.User;
import com.bjlemon.mybatis.service.UserService;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static org.junit.Assert.*;
public class UerServiceImplTest {
private UserService userService;
@Before
public void setUp() throws Exception {
this.userService = new UerServiceImpl();
}
@Test
public void addUser() {
User user = new User();
user.setBirthday(new Date());
user.setPassword("121312313123");
user.setName("1231");
user.setSalary(12.33F);
this.userService.addUser(user);
}
@Test
public void testSelect(){
List list = this.userService.findAllUserList();
for (User user: list){
System.out.println(user);
}
}
}
PS: 仅日常笔记整理,有错误请指出,喷子绕路