Java學習筆記-- 面向物件2
阿新 • • 發佈:2020-12-10
技術標籤:框架
整體
SQL
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(20) NOT NULL, `name` varchar(30) DEFAULT NULL, `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', '狂神', '123456'); INSERT INTO `user` VALUES ('2', '張三2', 'asdfgh'); INSERT INTO `user` VALUES ('3', '李四', '987654'); INSERT INTO `user` VALUES ('4', '的', 'adsf');
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yao</groupId> <artifactId>mybatis</artifactId> <version>1.0-SNAPSHOT</version> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> </project>
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456
log4j.properties
#將等級為DEBUG的日誌資訊輸出到console和file這兩個目的地,console和file的定義在下面的程式碼 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.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File=./log/yao.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
mybatis-config.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>
<properties resource="db.properties"/>
<!--標準日誌實現-->
<!--<settings>-->
<!--<setting name="logImpl" value="STDOUT_LOGGING"/>-->
<!--</settings>-->
<!--通過使用Log4j,我們可以控制日誌資訊輸送的目的地:控制檯,文字,GUI元件....-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--配置別名,注意順序-->
<typeAliases>
<typeAlias type="com.yao.pojo.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.182.153:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8"/>
<!--<property name="url" value="jdbc:mysql://192.168.182.153:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/>-->
<property name="username" value="${username}"/>
<property name="password" value="jarvis123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/yao/dao/UserMapper.xml"/>
</mappers>
</configuration>
MybatisUtils
package com.yao.utils;
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.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//獲取SqlSession連線
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
User
package com.yao.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author
* @date 2020/12/7 11:55
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id; //id
private String name; //姓名
private String psd; //密碼
}
UserDao Interface
package com.yao.dao;
import com.yao.pojo.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author
* @date 2020/12/7 11:57
*/
public interface UserDao {
List<User> selectUser();
//根據id查詢使用者
User selectUserById(int id);
User selectUserByNP(@Param("username") String username, @Param("pwd") String pwd);
User selectUserByNP2(Map<String,Object> map);
int addUser(User user);
//修改一個使用者
int updateUser(User user);
//根據id刪除使用者
int deleteUser(int id);
User selectlike(@Param("username") String username);
User selectlike2(@Param("username") String username);//會sql注入
//選擇全部使用者實現分頁
List<User> selectUser2(Map<String,Integer> map);
}
UserDaoImpl
package com.yao.dao;
import com.yao.pojo.User;
import java.util.List;
import java.util.Map;
/**
* @author
* @date 2020/12/7 14:03
*/
public class UserDaoImpl implements UserDao {
public List<User> selectUser() {
return null;
}
public User selectUserById(int id) {
return null;
}
public User selectUserByNP(String username, String pwd) {
return null;
}
public User selectUserByNP2(Map<String, Object> map) {
return null;
}
public int addUser(User user) {
return 0;
}
public int updateUser(User user) {
return 0;
}
public int deleteUser(int id) {
return 0;
}
public User selectlike(String username) {
return null;
}
public User selectlike2(String username) {
//會sql注入
return null;
}
public List<User> selectUser2(Map<String, Integer> map) {
return null;
}
}
UserMapper.xml
package com.yao.dao;
import com.yao.pojo.User;
import java.util.List;
import java.util.Map;
/**
* @author
* @date 2020/12/7 14:03
*/
public class UserDaoImpl implements UserDao {
public List<User> selectUser() {
return null;
}
public User selectUserById(int id) {
return null;
}
public User selectUserByNP(String username, String pwd) {
return null;
}
public User selectUserByNP2(Map<String, Object> map) {
return null;
}
public int addUser(User user) {
return 0;
}
public int updateUser(User user) {
return 0;
}
public int deleteUser(int id) {
return 0;
}
public User selectlike(String username) {
return null;
}
public User selectlike2(String username) {
//會sql注入
return null;
}
public List<User> selectUser2(Map<String, Integer> map) {
return null;
}
}
MyTest
import com.yao.dao.UserDao;
import com.yao.pojo.User;
import com.yao.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import org.apache.log4j.Logger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyTest {
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
//方法一,不推薦:
List<User> users = session.selectList("com.yao.dao.UserDao.selectUser");
// List<User> users = session.selectOne("com.yao.dao.UserDao.selectUser");
//方法二:
// UserDao mapper = session.getMapper(UserDao.class);
// List<User> users = mapper.selectUser();
for (User user: users){
System.out.println(user);
}
session.close();
}
@Test
public void tsetSelectUserById() {
SqlSession session = MybatisUtils.getSession(); //獲取SqlSession連線
UserDao mapper = session.getMapper(UserDao.class);
User user = mapper.selectUserById(1);
System.out.println(user);
session.close();
}
@Test
public void tsetSelectUserByNP() {
SqlSession session = MybatisUtils.getSession(); //獲取SqlSession連線
UserDao mapper = session.getMapper(UserDao.class);
User user = mapper.selectUserByNP("張三2","abcdef");
System.out.println(user);
session.close();
}
@Test
public void tsetSelectUserByNP2() {
SqlSession session = MybatisUtils.getSession(); //獲取SqlSession連線
UserDao mapper = session.getMapper(UserDao.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","狂神");
map.put("pwd","123456");
User user = mapper.selectUserByNP2(map);
System.out.println(user);
session.close();
}
@Test
public void testAddUser() {
SqlSession session = MybatisUtils.getSession();
UserDao mapper = session.getMapper(UserDao.class);
User user = new User(5,"王五","zxcvbn");
int i = mapper.addUser(user);
System.out.println(i);
session.commit(); //提交事務,重點!不寫的話不會提交到資料庫
session.close();
}
@Test
public void testUpdateUser() {
SqlSession session = MybatisUtils.getSession();
UserDao mapper = session.getMapper(UserDao.class);
User user = mapper.selectUserById(2);
user.setPsd("asdfgh");
int i = mapper.updateUser(user);
System.out.println(i);
session.commit(); //提交事務,重點!不寫的話不會提交到資料庫
session.close();
}
@Test
public void testDeleteUser() {
SqlSession session = MybatisUtils.getSession();
UserDao mapper = session.getMapper(UserDao.class);
int i = mapper.deleteUser(5);
System.out.println(i);
session.commit(); //提交事務,重點!不寫的話不會提交到資料庫
session.close();
}
@Test
public void selectlike() {
SqlSession session = MybatisUtils.getSession(); //獲取SqlSession連線
UserDao mapper = session.getMapper(UserDao.class);
String wildcardname = "%三%";
User user = mapper.selectlike(wildcardname);
System.out.println(user);
session.close();
}
@Test
//可能會sql注入
public void selectlike2() {
SqlSession session = MybatisUtils.getSession(); //獲取SqlSession連線
UserDao mapper = session.getMapper(UserDao.class);
String wildcardname = "%三%";
User user = mapper.selectlike2(wildcardname);
System.out.println(user);
session.close();
}
//注意導包:org.apache.log4j.Logger
static Logger logger = Logger.getLogger(MyTest.class);
@Test
public void selectUser2() {
logger.info("info:進入selectUser方法");
logger.debug("debug:進入selectUser方法");
logger.error("error: 進入selectUser方法");
SqlSession session = MybatisUtils.getSession();
UserDao mapper = session.getMapper(UserDao.class);
List<User> users = mapper.selectUser();
for (User user: users){
System.out.println(user);
}
session.close();
}
//分頁查詢 , 兩個引數startIndex , pageSize
@Test
public void testSelectUser2() {
SqlSession session = MybatisUtils.getSession();
UserDao mapper = session.getMapper(UserDao.class);
// int currentPage = 1; //第幾頁
// int pageSize = 2; //每頁顯示幾個
// Map<String,Integer> map = new HashMap<String,Integer>();
// map.put("startIndex",(currentPage-1)*pageSize);
// map.put("pageSize",pageSize);
int currentPage = 2; //從哪一行開始
int pageSize = 2; //幾個
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",currentPage);
map.put("pageSize",pageSize);
List<User> users = mapper.selectUser2(map);
for (User user: users){
System.out.println(user);
}
session.close();
}
}