Loading

第一个Mybatis程序

maven依赖





mysql
mysql-connector-java
5.1.47



org.mybatis
mybatis
3.5.2



junit
junit
4.12

编写一个mybatis.xml配置文件

























db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?userSSL=true&useUnicode=true&characterEncoding=UTF8
username=root
password=123456

写一个工具类

public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
try {
String resources="mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resources);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}

public static SqlSession getSqlSessionFactory() {
return sqlSessionFactory.openSession();
}
}

编写一个实体类

DROP TABLE IF EXISTS user;
CREATE TABLE user (
id int(20) auto_increment,
name varchar(30) DEFAULT NULL,
pwd varchar(30) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO user VALUES ('1', '李倩', '123123');
INSERT INTO user VALUES ('2', '张三', '123456');
INSERT INTO user VALUES ('3', '李四', '123456');
INSERT INTO user VALUES ('4', '赵柳', '1234556');
INSERT INTO user VALUES ('6', 'libai', '123456');
INSERT INTO user VALUES ('7', 'lisi', '123123');
INSERT INTO user VALUES ('8', '聊吧', '123123');

写一个UserDao接口

public interface UserMapper {
//查询用户
List getUserList();
//根据ID查询用户
User getUserById(@Param("userId") int id);
//insert 一个用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(@Param("userId") int id);
}

在resources编写对应的mapper文件







insert into user(id,name,pwd) values(#{id},#{name},#{pwd})



update user set name=#{name},pwd=#{pwd} where id=#{id}



delete from user where id = #{userId}

  • 插入时主键自增

  • useGeneratedKeys="true" keyProperty="id" keyColumn="id"



    insert into user(name,pwd) values(#{name},#{pwd})

日志功能

log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
log4j.appender.console.layout.ConversionPattern=%5p [%t] - %m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/rzk.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

测试

@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
}

总结

  • id :就是对于的namespace中的方法名

  • resultType : sql语句执行的返回值

  • parameterType :参数类型

  • 增删改需要提交事务

  • 如果想让mybatis自动提交事务,可在根据类openSession 开启自动提交

    public static SqlSession getSqlSession(){
    return sqlSessionFactory.openSession(true);
    }

posted @ 2020-05-08 23:53  Rzk  阅读(133)  评论(0)    收藏  举报