第一个Mybatis程序
maven依赖
编写一个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
//根据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
for (User user : userList) {
System.out.println(user);
}
}

总结
-
id :就是对于的namespace中的方法名
-
resultType : sql语句执行的返回值
-
parameterType :参数类型
-
增删改需要提交事务
-
如果想让mybatis自动提交事务,可在根据类openSession 开启自动提交
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}

浙公网安备 33010602011771号